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

ねえ、私は私が追加した1つのことをした問題を解決しました

CELERY_IMPORTS=("mytasks")

私のceleryconfig.pyファイルで、私は成功しました。

于 2012-08-24T13:22:39.670 に答える
2

includeCeleryクラスでparamを使用することもできます:http: //docs.celeryproject.org/en/latest/getting-started/next-steps.html#proj-celery-py

于 2013-03-08T14:37:17.813 に答える