我有一個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」以減少連接對象的數量 –