Я новичок в сельдерее и пытаюсь использовать его в своем приложении. Ниже представлена моя основная структура приложенияСельдерей «получил незарегистрированную задачу»
my_app
|-run.py
|-app
|-mod1
|-mod2
|-tasks
|-__init__.py
|-email
|-other_tasks_file
Я хочу ограничить все свои фоновые задачи своим модулем задач. В инициализации .py задач у меня есть
from celery import Celery
celery = Celery('my_app', broker='redis://localhost:6379/0')
в рамках своих задач/электронной почты у меня есть
from app.tasks import celery
@celery.task
def send_email():
#do stuff
от терминала я начать работника с помощью
celery -A app.tasks worker --loglevel=DEBUG
Но моя задача не отображается в списке задач сельдерея. Кроме того, когда я запускаю свою задачу от переводчика, как так
>>from app.tasks import email
>>email_result = email.send_email.delay()
Когда я делаю это я получаю следующий ответ на мой сельдерей терминал
Received unregistered task of type 'app.tasks.emails.send_email'.
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 url for more information.
The full contents of the message body was:
{'kwargs': {}, 'taskset': None, 'id': '51e8f766-e772-4d85-bad0-5a6774ea541a', 'eta': None, 'timelimit': (None, None), 'args': [], 'retries': 0, 'task': 'app.tasks.emails.send_email', 'utc': True, 'errbacks': None, 'chord': None, 'expires': None, 'callbacks': None} (283b)
Traceback (most recent call last):
File "/usr/local/lib/python3.4/site-packages/celery/app/utils.py", line 235, in find_app
sym = symbol_by_name(app, imp=imp)
File "/usr/local/lib/python3.4/site-packages/celery/bin/base.py", line 492, in symbol_by_name
return symbol_by_name(name, imp=imp)
File "/usr/local/lib/python3.4/site-packages/kombu/utils/__init__.py", line 101, in symbol_by_name
return getattr(module, cls_name) if cls_name else module
AttributeError: 'module' object has no attribute 'tasks'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/local/lib/python3.4/site-packages/celery/worker/consumer.py", line 456, in on_task_received
strategies[name](message, body,
KeyError: 'app.tasks.channels.send_email'
Я использую Python 3.4 и сельдерей 3.1.23