我們最近更新了MongoDB從2.6到3.0。從那以後,我們在使用PyMongo和Multiprocessing時遇到了麻煩。PyMongo和多處理:ServerSelectionTimeoutError
問題是,有時某個進程中的操作(例如find)會掛起約30秒,然後引發異常「ServerSelectionTimeoutError:尚未找到服務器」。
行爲似乎與輸入無關,因爲我們的腳本通常運行得很好,然後隨機掛起。
日誌文件不顯示任何與超時相關的條目,也沒有在Internet上找到有關此問題的任何有用信息。
腳本正在我們的測試環境中運行,這意味着沒有涉及副本集並且Mongo實例綁定到localhost。
下面是完整的堆棧跟蹤:
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項目中打開一張票,我們來看一下嗎? –