我有一个Django项目,使用gunicorn运行wsgi应用程序。对像我这样的python新手来说太过分了。
我有一个下面的gunicorn命令,该命令在应用程序启动时运行。
exec ./env/bin/gunicorn $wsgi:application \
--config djanqloud/gunicorn-prometheus-config.py \
--name "djanqloud" \
--workers 3 \
--timeout 60 \
--user=defaultuser --group=nogroup \
--log-level=debug \
--bind=0.0.0.0:8002
下面是我的wsgi.py文件:
import os
from django.core.wsgi import get_wsgi_application
os.environ['DJANGO_SETTINGS_MODULE'] = 'djanqloud.settings'
application = get_wsgi_application()
从docker容器中的“ ps- -eaf”命令中显示的gunicorn命令:
/opt/gq-console/env/bin/python2 /opt/gq-console/env/bin/gunicorn wsgi:application --config /opt/gq-console//gunicorn-prometheus-config.py --name djanqloud --workers 3 --timeout 60 --user=gq-console --group=nogroup --log-level=debug --bind=0.0.0.0:8002
它们是我在django项目中创建的一个简单线程,当上述工作线程被杀死时,这些线程也会被杀死。
我的问题是:
自动重启以上工作线程后,我还能在哪里创建我的线程吗?
我尝试覆盖wsgi.py文件中的get_wsgi_application()函数,但是在启动工作线程时出现以下错误:
AppImportError: Failed to find application object: 'application'.
我是python django和wsgi应用程序的新手,所以请尝试详细说明您的答案。
基本上,我正在寻找可以保留我的启动代码的位置,该启动代码在wsgi worker线程被杀死并自动启动时运行。 谢谢。
答案 0 :(得分:0)
要在服务器启动后自动启动您的应用程序,或者如果gunicorn工人被杀害,则自动重启您的应用程序,请使用过程控制系统,例如主管。这样会自动重新启动您的gunicorn程序。