Gunicorn仅在发送某些请求时才开始工作

时间:2018-09-03 11:29:30

标签: python django gunicorn

我为5名工作人员配置了gunicorn。但是只有1个启动,其他的就像处于睡眠状态。只有当我尝试登录即发送请求给他们时,他们才会第一次派生/启动。下面是配置。

$VIRT_ENV/gunicorn -c config.py utrade.wsgi:application \
                          --preload \
                          --log-level=debug \
                          --timeout=30 \
                          --access-logfile=- \
                          --access-logformat="%(r)s %(s)s" \
                          --log-file=-

在django视图文件中,有龙卷风工人启动代码,有某种依赖性,我希望在用户登录之前启动所有龙卷风进程。为了清楚起见,假设我将print('Hello')放入了Django views文件中。直到请求得到满足,工作人员才打印它。

我如何才能使金枪鱼开始所有工人,而不是等待请求?我尝试了preload标志,但没有帮助。

config.py

bind = 'unix:/code/internal.utradesolutions.com/tanmay.garg/web/web/utrade/run/gunicorn.sock' 
workers = 5 
daemon=True

1 个答案:

答案 0 :(得分:0)

您需要使用流程管理器(例如supervisor)与运行wsgi流程的gunicorn分开管理龙卷风流程。

preload而言,这是一种优化方法,可在工作程序启动之前加载代码(docs):

  

在派生工作进程之前加载应用程序代码。

     

通过预加载应用程序,您还可以节省一些RAM资源   以加快服务器启动时间。虽然,如果您推迟申请   加载到每个工作进程中,您可以重新加载应用程序代码   重新启动工作人员很容易。