私はWebアプリケーションを持っており、毎分何千ものリクエストがあります。以下は、mongoDB接続用のPythonコードです。
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()
1つのhttpリクエストは、この関数を介して接続を取得します。
httpリクエストは、リクエストが終了する前にend_requestを呼び出します。
しかし、リクエストを増やしている間、mongoDBには多くのAutoReconnectエラーと20000を超える接続があることがわかりました。
何か提案はありますか?