最近做个Spark 的项目,发现如果插入3000多天数据竟然报错;
Pymong <span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/pymongo" title="View all posts in pymongo" target="_blank">pymongo</a></span>.errors.AutoReconnect: 127.0.0.1:27017
1
2
|
Pymong
pymongo
.
errors
.
AutoReconnect
:
127.0.0.1
:
27017
|
在网上找了好多的答案 ,有的说重试插入,有的说 重启,解决问题的思路千差万别啊。但是还是没解决,最后我想了想,试了下 Python 中的单例模式来创建Pymongo的数据库链接
代码如下:
<br />class ConnectionSingleton(object): '''通过重载实例化函数__new__缓存mongodb连接''' conn=None def __new__(cls,*args,**kwds): if cls.conn is None: cls.conn=<span class="wp_keywordlink_affiliate"><a href="https://www.168seo.cn/tag/pymongo" title="View all posts in pymongo" target="_blank">pymongo</a></span>.MongoClient() return cls.conn def get_col(dbname,colletion): """ :param colletion: :return: 返回数据库的表 """ cl = ConnectionSingleton() # maxPoolSize return cl[dbname][colletion]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
<
br
/
>
class
ConnectionSingleton
(
object
)
:
'''通过重载实例化函数__new__缓存mongodb连接'''
conn
=
None
def
__new__
(
cls
,
*
args
,
*
*
kwds
)
:
if
cls
.
conn
is
None
:
cls
.
conn
=
pymongo
.
MongoClient
(
)
return
cls
.
conn
def
get_col
(
dbname
,
colletion
)
:
"""
:param colletion:
:return: 返回数据库的表
"""
cl
=
ConnectionSingleton
(
)
# maxPoolSize
return
cl
[
dbname
]
[
colletion
]
|
终于解决了问题
详细了解 单例模式创建的方式 可以了解这几种方式:
https://www.168seo.cn/python/24816.html