Тайм-аут MongoDB Atlas после обновления развертывания — «ReplicaSetNoPrimary»Python

Программы на Python
Ответить
Anonymous
 Тайм-аут MongoDB Atlas после обновления развертывания — «ReplicaSetNoPrimary»

Сообщение Anonymous »

Я обновил свое серверное развертывание (приложение Flask) новой функцией, не связанной с логикой базы данных, и внезапно соединения MongoDB Atlas больше не работают. До обновления все было нормально.
Локальная среда по-прежнему работает → происходит сбой только развернутого экземпляра.

✅ Запуск приложения (нормальный)
Среда загружается правильно:

Код: Выделить всё

MONGODB_URI: mongodb+srv://...
DB_NAME: expTracker
Приложение и планировщик загружаются нормально, проверки работоспособности проходят.

❌ Ошибка во время вызова БД
Вызов db.users.find_one() не удался:

Код: Выделить всё

pymongo.errors.ServerSelectionTimeoutError:
... timed out ...
topology_type: ReplicaSetNoPrimary
server_type: Unknown
ac-xxx-shard-00-00.mongodb.net:27017 timed out
ac-xxx-shard-00-01.mongodb.net:27017 timed out
ac-xxx-shard-00-02.mongodb.net:27017 timed out
Таким образом, ни один осколок не становится основным; все время истекло.
Никаких изменений кода или URI не было.

Фрагменты кода

Код: Выделить всё

MONGO_CONNECTION_ARGS = {
"tls": True,
"tlsDisableOCSPEndpointCheck": True, # This was in the original, keeping it
"serverSelectionTimeoutMS": 8000,
"connectTimeoutMS": 5000,
"socketTimeoutMS": 10000,
}

def get_db():
if 'db_client' not in g:
uri = current_app.config['MONGODB_URI']
# This MongoClient constructor fails in deployment
g.db_client = MongoClient(uri, **MONGO_CONNECTION_ARGS)
g.db = g.db_client[current_app.config['DB_NAME']]
return g.db
Что я проверил
✅ Один и тот же URI работает локально

✅ Переменные Env печатаются правильно

✅ Служба запускается успешно

❌ Экземпляр развертывания не может запросить MongoDB

Подробнее здесь: https://stackoverflow.com/questions/798 ... tnoprimary
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»