当一些请求被发送时,Gunicorn只启动工作人员

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当一些请求被发送时,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 views文件里面有龙卷风工作者初始化代码,有一种依赖性,我希望所有龙卷风进程在用户登录之前启动。为了说清楚,让我们说如果我把print('Hello')放在我的django views文件中。在提供请求之前,工作人员不会打印它。

如何让gunicorn启动所有工人而不是等待请求?我试过preload旗,但它没有帮助。

config.朋友

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

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

至于preload,这是一个在工人开始之前加载代码的优化(docs):

在分叉工作进程之前加载应用程序代码。

通过预加载应用程序,您可以节省一些RAM资源,并加快服务器启动时间。但是,如果将应用程序加载延迟到每个工作进程,则可以通过重新启动工作人员轻松地重新加载应用程序代码。

以上是关于当一些请求被发送时,Gunicorn只启动工作人员的主要内容,如果未能解决你的问题,请参考以下文章

gunicorn 使用主管启动时会引发数据库错误,手动启动时是不是正常工作?

Http 请求在从 ServiceBase.OnShutdown 发送时被中止,但在 OnStop 中没有

通过Sendgrid API发送电子邮件时出错

ElasticSearch-工作流程

当应用程序在后台时,如何从 ios 5 应用程序向本地网络中的服务器发送一些请求?

使用中的 Gunicorn 连接:('0.0.0.0', 5000)