В цитируемой статье, есть специальные рекомендации для Django и поэтому приложения: http://uwsgi-docs.readthedocs.io/en/latest/articles/TheArtOfGracefulReloading.html#dealing-with-ultra-lazy-apps-like-django
На некоторых из моих проектов, есть /warmup/
URL, который загружает все, что может быть загружена заранее. UWSGI действительно дает запросы клиентов работнику только после того, как весь wsgi.py
проекта бежал, поэтому мы делаем Ложный вызов на /warmup/
URL ПЕРЕД uWSGI пытался служить любые реальные запросы клиентов:
# /django-project-root/wsgi.py
import sys
from django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
(...)
# Django warm-up ahead of time instead of lazy
# From: http://uwsgi-docs.readthedocs.org/en/latest/articles/TheArtOfGracefulReloading.html#dealing-with-ultra-lazy-apps-like-django
# And: https://github.com/stefantalpalaru/uwsgi_reload/blob/master/examples/wsgi.py#L19
application({
'REQUEST_METHOD': 'GET',
'SERVER_NAME': '127.0.0.1',
'SERVER_PORT': 80,
'PATH_INFO': '/warmup/',
'wsgi.input': sys.stdin,
}, lambda x, y: None)
Пожалуйста, обратите внимание, что если ваш uwsgi.ini
настроит lazy-apps=true
, тогда загрузка процесса будет инициироваться только на клиентских запросах, поэтому она будет прогреваться только в случае harakiri
. В противном случае он будет прогреваться отлично.