Superivosr出现ERROR (spawn error)错误的3种原因和解决方案

2024年04月15日 django Python51

最近在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/

展开阅读全文