Большинство сообщений в блоге и примеры в Интернете, в целях подключения к MongoDB с использованием Mongoengine в Python/Django, предложили добавить эти строки в settings.py
файл приложения:Взятие mongoengine.connect из настройки.py в django
from mongoengine import connect
connect('project1', host='localhost')
Он отлично работает для большинства случаев, кроме одного я столкнулся в последнее время: Когда база данных вниз!
Позвольте сказать, что если db опускается, процесс, который заботится о веб-сервере (в моем случае, Supervisord
), прекратит запуск приложения из-за исключения, которое connect
выбрасывает. Он может попробовать несколько раз, но после достижения таймаута он перестанет пытаться.
Так что, даже если ваше приложение имеет некоторые части, которые не привязаны к db, они также сломаются.
Быстрое решение этой проблемы является добавление блока попытка/исключение в код подключения:
try:
connect('project1', host='localhost')
except Exception as e:
print(e)
, но я ищу для лучшего и чистым способом, чтобы справиться с этим.
FYI, mongoengine предоставляет метод для [регистрации соединения] (http://docs.mongoengine.org/en/latest/apireference.html#mongoengine.register_connection). Но я все еще смущен тем, как и где я должен подключиться к db в этом сценарии (используя pymongo или mongoengine)? Должен ли я писать промежуточное ПО? : -/ – Rahman
Да, но я не уверен, сможешь ли ты его использовать. Как подключиться - используйте 'pymongo' и зарегистрируйте соединение с' mongoengine'. Что касается того, где, как правило, при запуске приложения, определенные настройки не подходят для него, но я не эксперт по django, поэтому вы можете задать отдельный вопрос для этого. – matino