【发布时间】:2015-08-22 23:53:06
【问题描述】:
我们最近将 MongoDB 从 2.6 更新到了 3.0。从那时起,我们在将 PyMongo 与 Multiprocessing 结合使用时遇到了麻烦。
问题在于,有时进程中的操作(例如查找)会挂起约 30 秒,然后引发异常“ServerSelectionTimeoutError: No servers found yet”。
该行为似乎与输入无关,因为我们的脚本通常可以正常运行几次,然后随机挂起。
日志文件没有显示任何与超时相关的条目,我也没有在 Internet 上找到任何有关此问题的有用信息。
脚本在我们的测试环境中运行,这意味着不涉及副本集,Mongo 实例绑定到本地主机。
这里是完整的堆栈跟踪:
File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "somescript.py", line 109, in run
self.find_incoming_cc()
File "somescript.py", line 370, in find_incoming_cc
{'_id': 1, 'cc': 1}
File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 983, in next
if len(self.__data) or self._refresh():
File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 908, in _refresh
self.__read_preference))
File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 813, in __send_message
**kwargs)
File "/usr/local/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 728, in _send_message_with_response
server = topology.select_server(selector)
File "/usr/local/lib/python2.7/dist-packages/pymongo/topology.py", line 121, in select_server
address))
File "/usr/local/lib/python2.7/dist-packages/pymongo/topology.py", line 97, in select_servers
self._error_message(selector))
ServerSelectionTimeoutError: No servers found yet
现在的问题是:将 PyMongo 与多处理一起使用时是否存在任何已知问题/错误?有没有办法调试异常?
感谢您的帮助!
【问题讨论】:
-
您说您将 MongoDB 从 2.6 更新到 3.0,我假设您也将 PyMongo 从某个版本升级到 PyMongo 3?与这个问题相关的是新的 PyMongo 代码,而不是新的 MongoDB 版本。在任何情况下,PyMongo 和多处理都没有已知的错误,请您在 jira.mongodb.com 的 PYTHON 项目中打开一张票,我们来看看?
标签: mongodb multiprocessing pymongo