Celery收到未注册的任务类型(运行示例) [英] Celery Received unregistered task of type (run example)
问题描述
我正在尝试运行示例参见Celery文档。
I'm trying to run example from Celery documentation.
我运行: celeryd --loglevel = INFO
/usr/local/lib/python2.7/dist-packages/celery/loaders/default.py:64: NotConfigured: No 'celeryconfig' module found! Please make sure it exists and is available to Python.
"is available to Python." % (configname, )))
[2012-03-19 04:26:34,899: WARNING/MainProcess]
-------------- celery@ubuntu v2.5.1
---- **** -----
--- * *** * -- [Configuration]
-- * - **** --- . broker: amqp://guest@localhost:5672//
- ** ---------- . loader: celery.loaders.default.Loader
- ** ---------- . logfile: [stderr]@INFO
- ** ---------- . concurrency: 4
- ** ---------- . events: OFF
- *** --- * --- . beat: OFF
-- ******* ----
--- ***** ----- [Queues]
-------------- . celery: exchange:celery (direct) binding:celery
tasks.py:
# -*- coding: utf-8 -*-
from celery.task import task
@task
def add(x, y):
return x + y
run_task .py:
run_task.py:
# -*- coding: utf-8 -*-
from tasks import add
result = add.delay(4, 4)
print (result)
print (result.ready())
print (result.get())
在同一文件夹celeryconfig.py中:
In same folder celeryconfig.py:
CELERY_IMPORTS = ("tasks", )
CELERY_RESULT_BACKEND = "amqp"
BROKER_URL = "amqp://guest:guest@localhost:5672//"
CELERY_TASK_RESULT_EXPIRES = 300
当我运行 run_task.py时:
When I run "run_task.py":
在python控制台上
on python console
eb503f77-b5fc-44e2-ac0b-91ce6ddbf153
False
celeryd服务器上的错误
errors on celeryd server
[2012-03-19 04:34:14,913: ERROR/MainProcess] Received unregistered task of type 'tasks.add'.
The message has been ignored and discarded.
Did you remember to import the module containing this task?
Or maybe you are using relative imports?
Please see http://bit.ly/gLye1c for more information.
The full contents of the message body was:
{'retries': 0, 'task': 'tasks.add', 'utc': False, 'args': (4, 4), 'expires': None, 'eta': None, 'kwargs': {}, 'id': '841bc21f-8124-436b-92f1-e3b62cafdfe7'}
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/celery/worker/consumer.py", line 444, in receive_message
self.strategies[name](message, body, message.ack_log_error)
KeyError: 'tasks.add'
请解释问题所在。
推荐答案
我遇到了同样的问题:
的原因收到类型未注册的任务。
是celeryd服务在服务启动时未找到并注册任务(顺便说一句,当您启动
时,其列表可见。 /manage.py celeryd --loglevel = info
)。
I had the same problem:
The reason of "Received unregistered task of type.."
was that celeryd service didn't find and register the tasks on service start (btw their list is visible when you start
./manage.py celeryd --loglevel=info
).
这些任务应在 CELERY_IMPORTS =(任务,)
。
如果您有特殊的 celery_settings.py
文件,必须按照digivampire的说法在celeryd服务启动时声明为-settings = celery_settings.py
。
These tasks should be declared in CELERY_IMPORTS = ("tasks", )
in settings file.
If you have a special celery_settings.py
file it has to be declared on celeryd service start as --settings=celery_settings.py
as digivampire wrote.
这篇关于Celery收到未注册的任务类型(运行示例)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!