当我的服务器(托管在 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
除了不能解决问题(哈哈)之外,这感觉很肮脏,所以我强烈不希望做这样的事情。
提前感谢任何指导。