系统是Centos7,它有一个python2.x。 1GB内存和单核。
我安装了python3.x,我可以将python3编译成python3。
django-celery项目基于virtualenv python3.x,我在nginx,uwsgi,mariadb上做得很好。至少,我认为没有错误发生。
我尝试使用主管来控制django-celery的工作者,如下所示:
command=env/bin/python project/manage.py celeryd -l INFO -n worker_%(process_num)s
numprocs=4
process_name=projects_worker_%(process_num)s
stdout_logfile=logfile.log
etderr_logfile=logfile_err.log
还有关于芹菜事件,芹菜节拍的设定,这部分很好,没有错误发生。错误来自工人的一部分。
当我保持过程大于1时,它会首先运行,当我做supervisorctl status
时,所有都在运行。
但是,当我执行相同的命令再次查看状态时,某些进程状态将更改为启动。
所以我尝试了更多次,我发现:工人的状态总是从跑步变为开始,然后从开始变为跑步 - 没有停止。
当我在tmp / supervisor.log上检查主管的日志文件时,它显示如下:
exit status 1; not expected
entered runnging state,process has stayed up for > than 1 seconds(startsecs)
'project_worker_0' with pid 2284
也许这表明了为什么工人一直在改变状态。
更重要的是,当我将过程改为1时,工人可能会失败。工人的日志告诉我:
stale pidfile exists.Removing it
但是,我没有把pidfile路径发送到worker.And,我刚刚在/
路径找到了事件并且击败了pidfie,没有工人的pidfile。另外,我尝试使用find / -name *.pid
找到像worker或者celeryd这样的pidfile,但是这里不存在。
你的任何想法都可能对我有所帮助,祝你好运!
最后,我昨天晚上解决了这个问题。
env/bin/python project/manage.py celeryd
无法成功运行。所以主管会启动一个很快就会失败的过程。export C_FORCE_ROOT='true'
添加到centos环境文件并获取它。supervisorctl reload
,它只是重新加载.conf文件,而不是环境文件。尝试杀死进程supervisord -c xx.conf
(ps aux | grep supervisord
和kill -9 process_number
,小心)。