gpt4 book ai didi

python - 升级到 PyMongo 3.0 导致 ServerSelectionTimeoutError

转载 作者:太空狗 更新时间:2023-10-29 20:32:09 28 4
gpt4 key购买 nike

我最近将 Bottle + uWSGI + Nginx 应用程序升级到了 MongoDB 3.0.2。它在 PyMongo 2.8 上运行良好,但今天我通过运行以下命令升级到 PyMongo 3.0:

pip install --upgrade pymongo

我没有对代码做任何其他更改,但现在我不断收到以下错误。

File "/pymongo/cursor.py", line 968, in __next__ if len(self.__data) or self._refresh():
File "/pymongo/cursor.py", line 905, in _refresh self.__read_preference))
File "/pymongo/cursor.py", line 812, in __send_message **kwargs)
File "/pymongo/mongo_client.py", line 716, in _send_message_with_response server = topology.select_server(selector)
File "/pymongo/topology.py", line 113, in select_server server_selection_timeout))
File "/pymongo/topology.py", line 93, in select_servers self._error_message(selector))
ServerSelectionTimeoutError: No servers found yet

我用来连接数据库的函数如下:

def connect_db(db_name):
global db
host = "localhost"
port = 27017
connection = pymongo.MongoClient(host=host, port=port)
db = connection[db_name]

我已经重启了所有的服务器。静态页面工作正常,但任何试图访问数据库的页面都会挂起并抛出上述错误。但是,如果我转到 mongo shell 或 Python shell 并查询 MongoDB 服务器,它工作正常。

>>> import pymongo
>>> host = "localhost"
>>> port = 27017
>>> connection = pymongo.MongoClient(host=host, port=port)
>>> db = connection[test]
>>> db.test.insert_one({"test": True});
<pymongo.results.InsertOneResult object at 0x7fc43b8efc80>

似乎只有我的应用程序找不到 MongoDB 服务器。请注意,我使用的是虚拟环境,以防以任何方式影响情况。此外,如果我降级回 PyMongo 2.8,一切正常。

最佳答案

这似乎与 this question 中的问题相同,还有这个 bug .但是我尝试按照那里的建议在 MongoClient() 创建中设置 connect=False 无济于事。目前似乎唯一可行的解​​决方案是降级到 2.8 (pip install pymongo==2.8)

关于python - 升级到 PyMongo 3.0 导致 ServerSelectionTimeoutError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29663931/

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