我正在尝试设置rabbitmq/celery/django-celery/django,这样它就是“防重启”的,也就是说它会自动恢复。一切似乎都很好,除了下面这一点:
当我重新启动时,所有服务都会启动,但似乎在rabbitmq之前启动了celeryd,并且celerybeat随后被终止,因为它无法连接(?):
[2011-06-14 00:48:35,128: WARNING/MainProcess] celery@inquire has started.
[2011-06-14 00:48:35,130: INFO/Beat] child process calling self.run()
[2011-06-14 00:48:35,131: INFO/Beat] Celerybeat: Starting...
[2011-06-14 00:48:35,134: ERROR/MainProcess] Consumer: Connection Error: [Errno 111] Connection refused. Trying again in 2 seconds...
[2011-06-14 00:48:35,688: INFO/Beat] process shutting down
[2011-06-14 00:48:35,689: WARNING/Beat] Process Beat:
[2011-06-14 00:48:35,689: WARNING/Beat] Traceback (most recent call last):
...
[2011-06-14 00:48:35,756: WARNING/Beat] File "/home/inquire/inquire.env/lib/python2.6/site-packages/amqplib/client_0_8/transport.py", line 220, in create_transport
[2011-06-14 00:48:35,760: WARNING/Beat] return TCPTransport(host, connect_timeout)
[2011-06-14 00:48:35,761: WARNING/Beat] File "/home/inquire/inquire.env/lib/python2.6/site-packages/amqplib/client_0_8/transport.py", line 58, in __init__
[2011-06-14 00:48:35,761: WARNING/Beat] self.sock.connect((host, port))
[2011-06-14 00:48:35,761: WARNING/Beat] File "<string>", line 1, in connect
[2011-06-14 00:48:35,761: WARNING/Beat] error: [Errno 111] Connection refused
[2011-06-14 00:48:35,761: INFO/Beat] process exiting with exitcode 1
[2011-06-14 00:48:37,137: ERROR/MainProcess] Consumer: Connection Error: [Errno 111] Connection refused. Trying again in 4 seconds...在Ubuntu上,我安装了rabbitmq-server with apt,django-celery with pip到我的virtualenv中,然后我符号链接了我从/etc/init.d中的https://github.com/ask/celery/tree/master/contrib/debian/init.d得到的" celeryd“初始化脚本,在/etc/default/celeryd中配置它以使用我的virtualenv中的django celeryd,并使它”不会重新启动“via (也许”默认值“是问题所在?)
update-rc.d celeryd defaults我没有使用单独的initscripts运行celeryd和celerybeat,而是将celeryd配置为包含Beat (也许这就是问题所在?):
CELERYD_OPTS="-v 2 -B -s celery -E"有什么建议可以解决这个问题吗?
如果我
sudo /etc/init.d/celeryd restart没有投诉:
[2011-06-14 00:54:29,157: WARNING/MainProcess] celery@inquire has started.
[2011-06-14 00:54:29,161: INFO/Beat] child process calling self.run()
[2011-06-14 00:54:29,162: INFO/Beat] Celerybeat: Starting...但我需要消除任何手动步骤的需要。
发布于 2011-06-15 17:18:00
celerybeat对代理服务的依赖确实是问题所在。安装initscript,而不是使用
update-rc.d celeryd defaults将rabbitmq-server脚本安装为用于start和kill的序列号20后,必须使用以下命令显式地在rabbitmq-server之后启动它(并在此之前终止它)来解决celerybeat的依赖关系
update-rc.d celeryd defaults 21 19注:我实际上选择了单独的celerybeat服务,而不是-B调用,并且只对该脚本执行了21个19,即有问题的那个。
发布于 2011-06-14 15:26:19
我认为问题不在于芹菜本身,而在于您的脚本,可能当celeryd启动时,代理还没有在监听。我使用的是几乎与您相同的命令,并且没有任何问题,使用-B选项启动celeryd脚本是正确的。我认为在您的reboot脚本中,您必须等待rabbitmq完全重启,然后才能启动celeryd,可能还需要测试连接。
https://stackoverflow.com/questions/6331119
复制相似问题