微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

升级到PyMongo 3.0导致ServerSelectionTimeoutError

我最近升级了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服务器,它工作正常。

MongoDB CountAsync和游标不能在Windows服务中使用新的驱动程序

卸载mongodb的PHP驱动程序,并安装不同的版本

在控制台上执行PHP脚本

当我在RedHat上安装MongoDB时出现错误

无法写入/ sys / kernel /在OVH CentOS 7上为MongoDB禁用透明巨大页面(THP)

>>> 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,一切工作正常。

Windows Azure特定版本?

在amazon linux上为PHP安装mongo驱动程序时出错

AWS – EC2 – MongoDB副本设置时间同步问题 – NTP – 复制滞后

在ARM上构buildmongo shell 3.2.x(armv7l / arm64 / aarch64) – 分段错误

“用代码8退出”示例meteor应用程序

这个问题似乎是同样的问题,这个错误 。 然而,我尝试在MongoClient()创建设置连接= False建议没有用。 目前唯一能解决问题的方案是降级到2.8( pip install pymongo==2.8 )

我认为这是这个问题的重复。

避免触发错误解决方法效果良好(在创建MongoClient实例时传递connect = False )。 pymongo 3.0.4版会有更清晰的警告。 并希望在下一个版本的修复。

这可能与这个关键的PyMomongo 3.0 bug在使用mongos时有关系吗? 如果是这样,他们推动了主分支上的修复(见这个提交) 。

编辑:

你有没有检查你的mongodb日志文件? 我觉得我有和你一样的问题。

我在/ var / log / mongodb中发现了以下问题:

[initandlisten] exception in initAndlistn: 15926 Insufficient free space for journals,terminating It seems I have no enough free disk in my VM so my mongodb it wasn't running on my machine.

在下面的帖子是这个错误解决方案: 为什么得到错误mongod死了,但子系统锁定和日志文件在Linux上的可用空间不足?

现在看来我的问题解决了。 也许你有同样的错误,你需要使用小文件才能工作。

最好的祝福。

对我来说这个问题是令人惊讶的。 我在Bash提示符下输入

sudo /usr/sbin/setsebool -P httpd_can_network_connect 1 sudo service httpd restart

信用这个答案 。 原来是Apache权限问题。

注意:我在CentOS 6.6上运行PyMongo 3.0,Python 2.6和Mongo 2.4。 我得到了一个勉强不同的错误,但它是在PyMongo的同一行。 这是我的堆栈跟踪的结束:

File "/usr/lib64/python2.6/site-packages/pymongo/topology.py",in select_servers self._error_message(selector)) serverSelectionTimeoutError: localhost:27017: [Errno 13] Permission denied

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐