gpt4 book ai didi

Python 和 mongoDB 连接池(pymongo)

转载 作者:可可西里 更新时间:2023-11-01 10:33:54 25 4
gpt4 key购买 nike

我有一个 Web 应用程序,每分钟有数千个请求。以下是我用于 mongoDB 连接的 python 代码:

工具.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"]

网络.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个连接。

你有什么建议吗?

最佳答案

  1. 对于自动重新连接,您只需捕获异常,然后尝试重新建立连接: http://api.mongodb.org/python/current/api/pymongo/errors.html

  2. 30 秒超时听起来太长了,试试更短的超时?

  3. 增加来自 mongodb 的最大连接数(默认:20000) http://www.mongodb.org/display/DOCS/Connections

关于Python 和 mongoDB 连接池(pymongo),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13505400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com