我为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
答案 0 :(得分:0)
您需要使用流程管理器(例如supervisor
)与运行wsgi流程的gunicorn分开管理龙卷风流程。
就preload
而言,这是一种优化方法,可在工作程序启动之前加载代码(docs):
在派生工作进程之前加载应用程序代码。
通过预加载应用程序,您还可以节省一些RAM资源 以加快服务器启动时间。虽然,如果您推迟申请 加载到每个工作进程中,您可以重新加载应用程序代码 重新启动工作人员很容易。