Обновление до 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 Оболочка или оболочка Python и запрос к серверу 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, все будет нормально.

Ответы на вопрос(1)

Ваш ответ на вопрос