在 uwsgi chain-raload 期间预热 django 应用程序
Warmup django application during uwsgi chain-raload
我正在使用 uwsgi + django 并尝试以最快的速度重新加载。我已经配置了链重新加载 (http://uwsgi-docs.readthedocs.io/en/latest/articles/TheArtOfGracefulReloading.html#chain-reloading-lazy-apps),但在工作人员重新加载后处理第一个请求时仍然有几秒钟的延迟。
有什么方法可以预热带有uwsgi 配置的django 应用程序以减少等待时间吗?
引用文章中,有专门推荐Django等应用:http://uwsgi-docs.readthedocs.io/en/latest/articles/TheArtOfGracefulReloading.html#dealing-with-ultra-lazy-apps-like-django
在我的一些项目中,有一个 /warmup/
URL 可以加载所有可以预先加载的内容。 uWSGI确实只在整个wsgi.py
项目运行之后才向worker发送客户端请求,所以我们在uWSGI尝试服务之前做了一个假调用/warmup/
url任何真实的客户请求:
# /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
的情况下预热。否则它会很好地预热。
我正在使用 uwsgi + django 并尝试以最快的速度重新加载。我已经配置了链重新加载 (http://uwsgi-docs.readthedocs.io/en/latest/articles/TheArtOfGracefulReloading.html#chain-reloading-lazy-apps),但在工作人员重新加载后处理第一个请求时仍然有几秒钟的延迟。
有什么方法可以预热带有uwsgi 配置的django 应用程序以减少等待时间吗?
引用文章中,有专门推荐Django等应用:http://uwsgi-docs.readthedocs.io/en/latest/articles/TheArtOfGracefulReloading.html#dealing-with-ultra-lazy-apps-like-django
在我的一些项目中,有一个 /warmup/
URL 可以加载所有可以预先加载的内容。 uWSGI确实只在整个wsgi.py
项目运行之后才向worker发送客户端请求,所以我们在uWSGI尝试服务之前做了一个假调用/warmup/
url任何真实的客户请求:
# /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
的情况下预热。否则它会很好地预热。