Supervisor 需要重新加载才能使 Flask 应用程序正常工作

Supervisor 需要重新加载才能使 Flask 应用程序正常工作

当我的服务器(托管在 vagrant VM 上的 centOS 7)重新启动时,我的 Python Flask 应用程序(由 Gunicorn 使用 nginx 作为反向代理提供)会抛出内部服务器错误(根据我收到的堆栈跟踪,它甚至找不到模板化的 html 文件……),直到sudo supervisorctl reload发出错误。此后,应用程序运行良好,我的生活也很好,但现在不行了,不是吗?

command我怀疑存在竞争条件(可能是在主管和 gunicorn 之间?)。我尝试在特定程序的文件中添加 sleep ,.ini但这没有任何帮助。

有其他人遇到过类似的事情吗?如果没有,有人知道如何延迟整个主管实用程序(而不仅仅是某个特定程序)的启动吗?

作为参考,我的文件内容如下.ini

[program:test]
command=/bin/gunicorn -b localhost:8000 -w 2 the_app:app
directory=/var/www/test
user=vagrant
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true

再次,在重新加载主管后,这可以正常工作,只是似乎无法正确启动(可能是由于某种竞争条件)。

为了完整性:添加睡眠条件导致文件.ini看起来像这样:

[program:test]
command=bash -c "sleep 10 && exec /bin/gunicorn -b localhost:8000 -w 2 the_app:app"
directory=/var/www/test
user=vagrant
autostart=true
autorestart=true
stopasgroup=true
killasgroup=true

除了不能解决问题(哈哈)之外,这感觉很肮脏,所以我强烈不希望做这样的事情。

提前感谢任何指导。

相关内容