웹 응용 프로그램이 있으며 매분마다 수천 개의 요청이 있습니다.Python과 mongoDB 연결 풀 (pymongo)
Tool.py : 다음은 MongoDB의 연결을위한 내 파이썬 코드
@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 요청이 기능을 통해 연결을 얻을 수
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는
http 요청은 요청이 끝나기 전에 end_request를 호출합니다.
그러나 요청이 증가하는 동안 mongoDB에는 많은 AutoReconnect 오류와 20000 개 이상의 연결이있는 것으로 나타났습니다.
의견이 있으십니까? http://api.mongodb.org/python/current/api/pymongo/errors.html
30 초 타임 아웃 대신 짧은 시간 제한을하려고 너무 긴 소리 : 자동 재 연결 당신은 단순히 예외를 catch하고 다시 연결을 얻으려고 들어
이 관련이 있지만, x는 아무도하지 않는 경우 '라고하는 것이 더 일반적이다 :'. –
globalconnection은 None이 될 수 없습니다. "globalconnection은 None입니다."라는 메시지가 나오기 때문에 그 라인에는 아무 것도 없습니다. " –
"동시에 "여러 개의 요청이있을 수 있으므로"if "를 줄이면됩니다. 연결 개체의 수 –