Upgrade auf PyMongo 3.0 mit ServerSelectionTimeoutError

Ich habe kürzlich eine Bottle + uWSGI + Nginx-Anwendung auf MongoDB 3.0.2 aktualisiert. Es funktionierte gut mit PyMongo 2.8, aber heute habe ich ein Upgrade auf PyMongo 3.0 durchgeführt, indem ich folgenden Befehl ausgeführt habe:

pip install --upgrade pymongo

Ich habe keine weiteren Änderungen am Code vorgenommen, aber jetzt wird immer wieder die folgende Fehlermeldung angezeigt.

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

Die Funktion, mit der ich eine Verbindung zur Datenbank herstelle, ist die folgende:

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

Ich habe alle Server neu gestartet. Die statischen Seiten funktionieren einwandfrei, aber jede Seite, die versucht, auf die Datenbank zuzugreifen, hängt und löst den obigen Fehler aus. Wenn ich jedoch zu einem @ gemongoshell oder eine Python-Shell und frage den MongoDB-Server ab, es funktioniert einwandfrei.

>>> 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>

Anscheinend kann nur meine Anwendung den MongoDB-Server nicht finden. Beachten Sie, dass ich eine virtuelle Umgebung verwende, falls sich dies in irgendeiner Weise auf die Situation auswirken würde. Auch wenn ich ein Downgrade auf PyMongo 2.8 durchführe, funktioniert alles einwandfrei.

Antworten auf die Frage(10)

Ihre Antwort auf die Frage