Когда я запускаю uwsgi в многопроцессорном режиме, он говорит, что pymongo должен запускаться со связью = False. Как я могу установить connect = False, если я запускаю flask-mongoengine?Запуск uwsgi с mongoengine
ответ
использовать ленивый вариант (--lazy) в вашем uwsgi.
mongoengine с многопроцессорной происходит тупиковой .. :(
Ну, как говорит Ju-вона подветренной, добавив опцию ленивым решает эту проблему, но настоятельно рекомендуется, как указано в документации uwsgi:
http://uwsgi-docs.readthedocs.io/en/latest/ThingsToKnow.html
UWSGI пытается (ab) использовать семантику копирования On Write для вызова fork() по возможности. По умолчанию он будет работать после того, как вы загрузили ваши приложения, чтобы как можно больше их памяти. Если это поведение нежелательно по какой-то причине, используйте опцию ленивых приложений. Это даст указание uWSGI загрузить приложение после каждой вилки работника(). Берегитесь, как есть старые варианты, названные лениво, что путь более инвазивная и крайне нежелательно (он все еще здесь только для обратной совместимости)
Таким образом, в случае, если вы хотите использовать эту опцию лучше использовать --lazy-приложение , Насколько я понимаю, проблема в том, что по умолчанию mongoengine for flask инициализирует только одно соединение, которое разветвленные proceses не могут использовать (из-за некоторых ограничений в клиенте pymongo). Что делает вариант ленивых приложений - загружать все для каждой вилки (которая использует больше памяти).
Существует декоратор, который позволяет запускать код сразу после создания предка.
Просто добавьте в ваше приложение:
from flask.ext.mongoengine import MongoEngine
from uwsgidecorators import postfork
app = Flask(__name__)
# do whatever you want with the application
db = MongoEngine() # set db as MongoEngine (without any app or configuration)
@prefork
def setup_db():
db.init_app(app) # this code actually calls to "connect" in pymongo
# define the rest of calls, etc
Я надеюсь, что этот ответ добавляет некоторые разъяснения!
- 1. Ошибка атрибута Mongoengine Uwsgi Dbref
- 2. Запуск uWSGI-сервера без sudo
- 3. Запуск службы uWSGI не работает
- 4. Запуск подпроцесса в приложении uwsgi
- 5. Запуск uWSGI/Flask/Python через некоторое время
- 6. Запуск режима uwsgi emperor дает ошибки nginx
- 7. Запуск Ansible Playbooks под uWSGI не работает
- 8. uWSGI: запуск отдельных экземпляров для каждого домена?
- 9. mongoengine pymongo.GEOSPHERE
- 10. Джанго Запуск на uWSGI с Nginx - INI метод не работает
- 11. ReferenceFields с MongoEngine
- 12. Сохранение DateTimeField с mongoengine
- 13. uWSGI автозапуск с Systemd
- 14. Управление uWSGI с Upstart
- 15. signal.SIGALRM с uwsgi
- 16. ошибка с FREEBSD uwsgi
- 17. Мониторинг uwsgi с zabbix
- 18. Использование try_files с uwsgi
- 19. Выполняет ли uWSGI запуск всех процессов во время загрузки?
- 20. MongoEngine & serverStatus
- 21. Mongoengine AttributeError
- 22. Поговорите с uwsgi RPC-приложением из процесса uwsgi
- 23. uWSGI + Django + Python: нет модуля с именем uwsgi
- 24. uWSGI - Обслуживание нескольких файлов python только с uWSGI за nginx
- 25. Как настроить mongoengine с django
- 26. Предстоящих дней рождения с MongoEngine
- 27. запросов с проекциями в mongoengine
- 28. use get_object_or_404() метод с mongoengine
- 29. запросов с mongoengine и Джанго
- 30. Mongoengine пользовательских проверок с изменением
Если декоратор на setup_db() в вашем примере кода будет @postfork, а не @prefork? –