10

我写了一个文件mytasks.py

from celery import Celery

celery = Celery("tasks",
                broker='redis://localhost:6379/0',
                backend='redis')


@celery.task
def add(x,y):
        return x+y

task.py如下_

from mytasks import add

add.delay(1,1)

我已经启动了 redis 服务器,我已经启动了 celery 服务器。但是当我运行 task.py 时,我收到以下错误:

    Received unregistered task of type 'mytasks.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': 'mytasks.add', 'eta': None, 'args': (1, 1), 'expires': None, 'callbacks': None, 'errbacks': None, 'kwargs': {}, 'id': 'a4792308-d575-4de4-8b67-26982cae2fa4', 'utc': True} (173b)

Traceback (most recent call last):
  File "/usr/local/lib/python2.7/dist-packages/celery/worker/consumer.py", line 411, in on_task_received
    strategies[name](message, body, message.ack_log_error)
KeyError: 'mytasks.add'

可能的原因是什么

4

2 回答 2

13

嘿我已经解决了我做了一件事我添加的问题

CELERY_IMPORTS=("mytasks")

在我的celeryconfig.py文件中,我成功了。

于 2012-08-24T13:22:39.670 回答
2

也可以include在 Celery 类中使​​用参数:http: //docs.celeryproject.org/en/latest/getting-started/next-steps.html#proj-celery-py

于 2013-03-08T14:37:17.813 回答