我有一个web应用程序,每分钟有数千个请求。 下面是我的MongoDB的连接Python代码:Python和mongoDB连接池(pymongo)
Tool.py:
globalconnection = None
def getCollection(name,safe=False,readpref=ReadPreference.PRIMARY):
global globalconnection
while globalconnection is None:
try:
if not globalconnection is None:
globalconnection.close()
globalconnection = Connection('mongodb://host:port',replicaSet='mysetname',safe=False,read_preference=ReadPreference.PRIMARY,network_timeout=30,max_pool_size=1024)
except Exception as e:
globalconnection = None
request_context.connection = globalconnection
return request_context.connection["mydb"]["mycoll"]
web.py
@app.route("/test")
def test():
request_collection = getCollection("user")
results = request_collection.find()
for result in results:
#do something...
request_collection.save(result)
request_collection.end_request()
一个HTTP请求获得通过此功能连接,
并且http请求在请求结束之前调用end_request。
但我发现在增加请求的同时,mongoDB中有很多AutoReconnect错误和超过20000个连接。
你有什么建议吗?
这是不相关的,但它是更常见的是说'如果x不是无:'。 –
更不用说,因为我们刚刚到达那里,全局连接不可能不是None,而“globalconnection为None:” –
因为在同一时间内会有多个请求进入“while”,所以我添加了“if”以减少连接对象的数量 –