我的 dotcloud 设置(带有 rabbitmq 的 django-celery)一周前运行良好——进程启动正常,日志也很干净。但是,我最近拒绝了(没有更新任何代码),现在日志显示进程无法启动,即使它们似乎正在运行。
监督日志
dotcloud@hack-default-www-0:/var/log/supervisor$ 更多 supervisord.log 2012-06-03 10:51:51,836 CRIT 将 uid 设置为用户 1000 2012-06-03 10:51:51,836 警告包含额外文件“/etc/supervisor/conf.d/uwsgi.c 解析期间的“关闭” 2012-06-03 10:51:51,836 警告包含额外文件“/home/dotcloud/current/supervi sord.conf”在解析期间 2012-06-03 10:51:51,938 INFO RPC 接口“主管”已初始化 2012-06-03 10:51:51,938 WARN cElementTree 未安装,使用较慢的 XML 解析器 用于 XML-RPC 2012-06-03 10:51:51,938 CRIT 服务器“unix_http_server”在没有任何 HTTP 的情况下运行 认证检查 2012-06-03 10:51:51,946 INFO 守护进程 2012-06-03 10:51:51,947 INFO supervisord 从 pid 144 开始 2012-06-03 10:51:53,128 产生的信息:'celerycam',pid 159 2012-06-03 10:51:53,133 信息产生:“apnsd”与 pid 161 2012-06-03 10:51:53,148 信息产生:“djcelery”,pid 为 164 2012-06-03 10:51:53,168 产生的信息:“uwsgi”,pid 为 167 2012-06-03 10:51:53,245 信息已退出:djcelery(退出状态 1;未预期) 2012-06-03 10:51:53,247 信息已退出:celerycam(退出状态 1;未预期) 2012-06-03 10:51:54,698 产生的信息:带有 pid 176 的“celerycam” 2012-06-03 10:51:54,698 INFO 成功:apnsd 进入 RUNNING 状态,进程有 s 超过 1 秒 (startsecs) 2012-06-03 10:51:54,705 信息产生:“djcelery”,pid 177 2012-06-03 10:51:54,706 INFO 成功:uwsgi 进入 RUNNING 状态,进程有 s 超过 1 秒 (startsecs) 2012-06-03 10:51:54,731 信息已退出:djcelery(退出状态 1;未预期) 2012-06-03 10:51:54,754 信息已退出:celerycam(退出状态 1;未预期) 2012-06-03 10:51:56,760 产生的信息:带有 pid 178 的“celerycam” 2012-06-03 10:51:56,765 信息生成:“djcelery”,pid 为 179 2012-06-03 10:51:56,790 信息已退出:celerycam(退出状态 1;未预期) 2012-06-03 10:51:56,791 信息已退出:djcelery(退出状态 1;未预期) 2012-06-03 10:51:59,798 信息产生:'celerycam' pid 180 2012-06-03 10:52:00,538 信息产生: 'djcelery' 与 pid 181 2012-06-03 10:52:00,565 信息已退出:celerycam(退出状态 1;未预期) 2012-06-03 10:52:00,571 信息放弃:celerycam 进入致命状态,st 太多 艺术重试太快 2012-06-03 10:52:00,573 信息已退出:djcelery(退出状态 1;未预期) 2012-06-03 10:52:01,575 信息放弃:djcelery 进入 FATAL 状态,STA 太多 rt 重试太快 dotcloud@hack-default-www-0:/var/log/supervisor$
djerror 日志:
dotcloud@hack-default-www-0:/var/log/supervisor$ 更多 djcelery_error.log 回溯(最近一次通话最后): 文件“hack/manage.py”,第 2 行,在 从 django.core.management 导入 execute_manager ImportError:没有名为 django.core.management 的模块 回溯(最近一次通话最后): 文件“hack/manage.py”,第 2 行,在 从 django.core.management 导入 execute_manager ImportError:没有名为 django.core.management 的模块 回溯(最近一次通话最后): 文件“hack/manage.py”,第 2 行,在 从 django.core.management 导入 execute_manager ImportError:没有名为 django.core.management 的模块 回溯(最近一次通话最后): 文件“hack/manage.py”,第 2 行,在 从 django.core.management 导入 execute_manager ImportError:没有名为 django.core.management 的模块 dotcloud@hack-default-www-0:/var/log/supervisor$
statusctrl 显示一些进程正在运行,但 pid 不同。此外,芹菜功能似乎工作正常。消息已处理,我可以在 django 管理界面中看到正在处理的消息(dj celery cam 正在运行)。
#supervisorctl状态 apnsd 运行 pid 225,正常运行时间 0:00:44 celerycam RUNNING pid 224,正常运行时间 0:00:44 djcelery RUNNING pid 226,正常运行时间 0:00:44
Supervisord.conf 文件:
[程序:djcelery] 目录 = /home/dotcloud/current/ 命令 = python hack/manage.py celeryd -E -l info -c 2 stderr_logfile = /var/log/supervisor/%(program_name)s_error.log stdout_logfile = /var/log/supervisor/%(program_name)s.log [程序:celerycam] 目录 = /home/dotcloud/current/ 命令 = python hack/manage.py celerycam stderr_logfile = /var/log/supervisor/%(program_name)s_error.log stdout_logfile = /var/log/supervisor/%(program_name)s.log
http://jefurii.cafejosti.net/blog/2011/01/26/celery-in-virtualenv-with-supervisord/说问题可能是使用的python不正确,所以我明确指定了python在supervisord文件中。它现在可以工作了,但它没有解释我在上面看到的内容以及为什么我不得不在上周正常工作时更改我的配置。
此外,并非所有的 pid 都在排队:
2012-06-03 11:19:03,045 CRIT 服务器“unix_http_server”在没有任何 HTTP 的情况下运行 认证检查 2012-06-03 11:19:03,051 INFO 守护进程 2012-06-03 11:19:03,052 INFO supervisord 从 pid 144 开始 2012-06-03 11:19:04,061 产生的信息:带有 pid 151 的“celerycam” 2012-06-03 11:19:04,066 信息产生:“apnsd”,pid 153 2012-06-03 11:19:04,085 信息产生:“djcelery”,pid 为 155 2012-06-03 11:19:04,104 信息产生:“uwsgi”,pid 156 2012-06-03 11:19:05,271 INFO 成功:celerycam 进入 RUNNING 状态,进程 h 熬夜超过 1 秒(startsecs) 2012-06-03 11:19:05,271 INFO 成功:apnsd 进入 RUNNING 状态,进程有 s 超过 1 秒 (startsecs) 2012-06-03 11:19:05,271 INFO 成功:djcelery 进入 RUNNING 状态,进程 ha s 熬夜超过 1 秒 (startsecs) 2012-06-03 11:19:05,271 INFO 成功:uwsgi 进入 RUNNING 状态,进程有 s 超过 1 秒 (startsecs)
状态显示 celery cam pids 没有排队:
#supervisorctl状态 apnsd 运行 pid 153,正常运行时间 0:06:17 celerycam RUNNING pid 150,正常运行时间 0:06:17 djcelery RUNNING pid 155,正常运行时间 0:06:17