Django Celery Empfangene nicht registrierte Aufgabe vom Typ 'appname.tasks.add'

Die Dokumentation und das Demo Django-Projekt finden Sie hierhttps: //github.com/celery/celery/tree/3.1/examples/djang

Projektstruktur

piesup2
    |
    piesup2
    |  |__init__.py
    |  |celery.py
    |  |settings.py
    |  |urls.py
    reports
       |tasks.py
       |models.py
       |etc....

Mein Code

piesup2/celery.py

from __future__ import absolute_import

import os

from celery import Celery

# set the default Django settings module for the 'celery' program.
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'piesup2.settings')

from django.conf import settings  # noqa

app = Celery('piesup2')

# Using a string here means the worker will not have to
# pickle the object when using Windows.
app.config_from_object('django.conf:settings')
app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)


@app.task(bind=True)
def debug_task(self):
    print('Request: {0!r}'.format(self.request))

piesup2/__init__.py

from __future__ import absolute_import

# This will make sure the app is always imported when
# Django starts so that shared_task will use this app.
from .celery import app as celery_app  # noqa

piesup2/reports/tasks.py

from __future__ import absolute_import

from celery import shared_task


@shared_task
def add(x, y):
    return x + y

Nachdem Celery von der Kommandozeile gestartet wurde mit:

celery -A piesup2 worker -l info

Wenn ich versuche, eine Aufgabe in meiner models.py-Datei wie folgt auszuführen:

 def do_stuff(self):
    from reports.tasks import add
    number = add.delay(2, 2)
    print(number)

Ich erhalte den folgenden Fehler:

[2016-08-05 16: 50: 31,625: ERROR / MainProcess] Nicht registrierte Aufgabe vom Typ 'reports.tasks.add' empfangen. Die Nachricht wurde ignoriert und verworfen.

Haben Sie daran gedacht, das Modul mit dieser Aufgabe zu importieren? Oder verwenden Sie relative Importe? Bitte siehehttp: //docs.celeryq.org/en/latest/userguide/tasks.html#task-name für mehr Informationen

Der vollständige Inhalt des Nachrichtentexts lautete: {'Rückrufe': Keine, 'Wiederholungen': 0, 'Akkord': Keine, 'Rückrufe': Keine, 'Aufgabe': 'reports.tasks.add', 'Argumente' : [2, 2], 'timelimit': [None, None], 'kwargs': {}, 'id': 'b12eb387-cf8c-483d-b53e-f9ce0ad6b421', 'taskset': None, 'eta': None, 'expires': None, 'utc': True} (258b) Traceback (letzter Aufruf zuletzt): File "/home/jwe/piesup2/venv/lib/python3.4/site-packages/celery/worker/ consumer.py ", Zeile 456, in on_task_received strategies [name] (message, body, KeyError: 'reports.tasks.add'

Antworten auf die Frage(2)

Ihre Antwort auf die Frage