运行celery status
或celery purge
命令时遇到问题。
File "/usr/bin/celery", line 11, in <module>
sys.exit(main())
File "/usr/lib/python2.7/site-packages/celery/__main__.py", line 30, in main
main()
File "/usr/lib/python2.7/site-packages/celery/bin/celery.py", line 81, in main
cmd.execute_from_commandline(argv)
File "/usr/lib/python2.7/site-packages/celery/bin/celery.py", line 769, in execute_from_commandline
super(CeleryCommand, self).execute_from_commandline(argv)))
File "/usr/lib/python2.7/site-packages/celery/bin/base.py", line 306, in execute_from_commandline
return self.handle_argv(self.prog_name, argv[1:])
File "/usr/lib/python2.7/site-packages/celery/bin/celery.py", line 761, in handle_argv
return self.execute(command, argv)
File "/usr/lib/python2.7/site-packages/celery/bin/celery.py", line 693, in execute
).run_from_argv(self.prog_name, argv[1:], command=argv[0])
File "/usr/lib/python2.7/site-packages/celery/bin/base.py", line 310, in run_from_argv
sys.argv if argv is None else argv, command)
File "/usr/lib/python2.7/site-packages/celery/bin/base.py", line 372, in handle_argv
return self(*args, **options)
File "/usr/lib/python2.7/site-packages/celery/bin/base.py", line 269, in __call__
ret = self.run(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/celery/bin/celery.py", line 472, in run
replies = I.run('ping', **kwargs)
File "/usr/lib/python2.7/site-packages/celery/bin/celery.py", line 324, in run
return self.do_call_method(args, **kwargs)
File "/usr/lib/python2.7/site-packages/celery/bin/celery.py", line 346, in do_call_method
callback=self.say_remote_command_reply)
File "/usr/lib/python2.7/site-packages/celery/bin/celery.py", line 385, in call
return getattr(i, method)(*args)
File "/usr/lib/python2.7/site-packages/celery/app/control.py", line 99, in ping
return self._request('ping')
File "/usr/lib/python2.7/site-packages/celery/app/control.py", line 70, in _request
timeout=self.timeout, reply=True,
File "/usr/lib/python2.7/site-packages/celery/app/control.py", line 306, in broadcast
limit, callback, channel=channel,
File "/usr/lib/python2.7/site-packages/kombu/pidbox.py", line 283, in _broadcast
chan = channel or self.connection.default_channel
File "/usr/lib/python2.7/site-packages/kombu/connection.py", line 755, in default_channel
self.connection
File "/usr/lib/python2.7/site-packages/kombu/connection.py", line 740, in connection
self._connection = self._establish_connection()
File "/usr/lib/python2.7/site-packages/kombu/connection.py", line 695, in _establish_connection
conn = self.transport.establish_connection()
File "/usr/lib/python2.7/site-packages/kombu/transport/pyamqp.py", line 112, in establish_connection
conn = self.Connection(**opts)
File "/usr/lib/python2.7/site-packages/amqp/connection.py", line 165, in __init__
self.transport = create_transport(host, connect_timeout, ssl)
File "/usr/lib/python2.7/site-packages/amqp/transport.py", line 294, in create_transport
return TCPTransport(host, connect_timeout)
File "/usr/lib/python2.7/site-packages/amqp/transport.py", line 95, in __init__
raise socket.error(last_err)
socket.error: [Errno 111] Connection refused
我正在使用SQS BROKER_URL。
任务运行正常,但是当我想清除队列上的任务(celery purge -f
)时,我得到上述错误。
software -> celery:3.1.11 (Cipater) kombu:3.0.18 py:2.7.5
billiard:3.3.0.17 py-amqp:1.4.5
platform -> system:Linux arch:64bit, ELF imp:CPython
loader -> celery.loaders.default.Loader
settings -> transport:amqp results:disabled
我的服务器端口22,80,443,8000端口打开,SQS celery
队列中有大量消息,因此芹菜和SQS之间的连接应该没问题。
答案 0 :(得分:10)
基于documentation of the commands status and purge,你需要提供芹菜与你所指的芹菜应用程序,以便它知道要使用的经纪人。只需输入$celery purge
或输入$celery status
芹菜,我就不知道您定位的芹菜应用程序是什么,因此失败。
因此,请转到您的芹菜应用程序
$cd /path/to/your/celery/app/directory
然后在您的应用上调用celery purge。在此示例中,我的目录为celeryapp.py
,内容为:
from config import config
from celery import Celery
celery_app = Celery('tasks',
backend=config.celery_backend_uri,
broker=config.celery_broker_uri)
celery_app.conf.update(
CELERY_IMPORTS=(
'app.module_a.tasks', # we're not including our tasks here as
'app.module_b.tasks', # our tasks are in other files listed here
)
)
内容并不像我们的电话那么重要,但提供这些内容是为了表明我们在celeryapp.py
内有我们的芹菜应用程序,因此我可以致电
$celery -A celeryapp status
worker-name-a@node-name: OK
worker-name-b@node-name: OK
或
$celery -A celeryapp purge
WARNING: This will remove all tasks from queue: celery.
There is no undo for this operation!
(to skip this prompt use the -f option)
Are you sure you want to delete all tasks (yes/NO)? yes
No messages purged from 1 queue
我有一个类似的question here,如果没有通过陈述提供应用程序,Sol似乎确认芹菜会输出此错误
如果你没有给它提供应用程序的位置,它将如何知道要使用的经纪人运输?