@mkone112
Начинающий питонист.

Где ошибка в минимальном примере Celery?

Читаю документацию, минимальный пример из двух файлов ведет себя неожиданно:
app.py
from celery import Celery

app = Celery('app', broker='redis://localhost', backend='redis://', )

@app.task
def t1(x):
    return f'{x}'


test.py
from tasks import t1

t1.delay(1).get()


Сначала запускаю celery так:
celery -A tasks worker

Затем запускаю
python test.py
и получаю получаю результат, но вот при втором запуске я получаю:
celery.exceptions.NotRegistered: 'tasks.t1'


И так по кругу, в половине запусков код работает, в половине исключение. Какой-то системы не видно.

Полный трейсбек:
Traceback (most recent call last):
File "/home/mk/PycharmProjects/celery_learn/test.py", line 2, in
t1.delay(1).get()
File "/home/mk/PycharmProjects/celery_learn/venv/lib/python3.10/site-packages/celery/result.py", line 251, in get
return self.backend.wait_for_pending(
File "/home/mk/PycharmProjects/celery_learn/venv/lib/python3.10/site-packages/celery/backends/asynchronous.py", line 223, in wait_for_pending
return result.maybe_throw(callback=callback, propagate=propagate)
File "/home/mk/PycharmProjects/celery_learn/venv/lib/python3.10/site-packages/celery/result.py", line 365, in maybe_throw
self.throw(value, self._to_remote_traceback(tb))
File "/home/mk/PycharmProjects/celery_learn/venv/lib/python3.10/site-packages/celery/result.py", line 358, in throw
self.on_ready.throw(*args, **kwargs)
File "/home/mk/PycharmProjects/celery_learn/venv/lib/python3.10/site-packages/vine/promises.py", line 235, in throw
reraise(type(exc), exc, tb)
File "/home/mk/PycharmProjects/celery_learn/venv/lib/python3.10/site-packages/vine/utils.py", line 27, in reraise
raise value
celery.exceptions.NotRegistered: 'tasks.t1'

Process finished with exit code 1


Лог celery

[2024-01-08 03:58:43,347: ERROR/MainProcess] Received unregistered task of type 'tasks.t1'.
The message has been ignored and discarded.
''
Did you remember to import the module containing this task?
Or maybe you're using relative imports?
''
Please see
https://docs.celeryq.dev/en/latest/internals/proto...
for more information.
''
The full contents of the message body was:
b'[[1], {}, {"callbacks": null, "errbacks": null, "chain": null, "chord": null}]' (78b)
''
The full contents of the message headers:
{'lang': 'py', 'task': 'tasks.t1', 'id': 'ef3eba30-bac6-4f19-ad67-01867dd34a8e', 'shadow': None, 'eta': None, 'expires': None, 'group': None, 'group_index': None, 'retries': 0, 'timelimit': [None, None], 'root_id': 'ef3eba30-bac6-4f19-ad67-01867dd34a8e', 'parent_id': None, 'argsrepr': '(1,)', 'kwargsrepr': '{}', 'origin': 'gen1085186@mk-pc', 'ignore_result': False, 'replaced_task_nesting': 0, 'stamped_headers': None, 'stamps': {}}
''
The delivery info for this task is:
{'exchange': '', 'routing_key': 'celery'}
Traceback (most recent call last):
File "/home/mk/PycharmProjects/celery_learn/venv/lib/python3.10/site-packages/celery/worker/consumer/consumer.py", line 658, in on_task_received
strategy = strategies[type_]
KeyError: 'tasks.t1'
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
@mkone112 Автор вопроса
Начинающий питонист.
В памяти завис лишний процесс celery - после его прививки все починилось.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы