最近在CentOS上部署Django项目,使用了uWSGI,同时使用了Superivosr守护进程。
在部署项目和使用过程中,出现过三次ERROR (spawn error)错误,每次都是不同的原因。
在网上查找解决方案也总是没有结果,最终还是靠自己分析解决。
一、uWSGI开启多进程时Superivosr配置中未添加相应设置导致的错误
这种问题往往出现在进行restart操作时。
如果WSGI开启了多进程,我们需要让Superivosr关闭进程,但是因为没有添加关闭多进程的配置,所以会有遗留进程。
解决方案
“supervisord.conf”
文件中添加如下配置:
stopasgroup = true # 用于停止进程组,即停止所有通过“uwsgi.ini”配置启动的进程。 killasgroup = true # 用于关闭进程组,即关闭所有通过“uwsgi.ini”配置启动的进程。
二、uWSGI进程未关闭导致的错误
如果手动启动过uWSGI,则需要先手动结束进程,才能够通过Superivosr进行开启。
解决方案
执行命令:
ps -ef|grep uwsgi
kill -9 [端口号]
或者使用“killall”命令通过名称关闭全部相关进程。
killall -9 uwsgi
此时,再次通过Superivosr启动项目就可以了。
三、配置冲突造成的错误
在使用Superivosr进行进程管理时,不能够同时开启uWSGI的“daemonize ”。
解决方案
删除“uwsgi.ini”文件中的“daemonize ”项即可。
本文链接:http://so.lmcjl.com/news/2141/