Skip to content

Celery task autodiscover fix#839

Merged
f213 merged 1 commit intomasterfrom
celery-task-import-fix
Mar 23, 2026
Merged

Celery task autodiscover fix#839
f213 merged 1 commit intomasterfrom
celery-task-import-fix

Conversation

@f213
Copy link
Member

@f213 f213 commented Mar 23, 2026

Издревле повелось, что мы инициализируем celery способом, отличным от документации.

В принципе всё работает, кроме довольно редкого случая, когда код тасок лежит в приложении, которое нигде не импортируется. В таком случае таски уходят в очередь, но воркер выдаёт NotRegistered, т.к. не знает этой таски.

Способ воспроизвести:

  1. Делаем отдельное приложение, к примеру triggers. Нигде его не импортируем код из него.
  2. Делаем периодическую таску, к примеру triggers.check
  3. Запускаем отдельный воркер на проде
  4. Делаем celery -A app inspect registered. Видим, что таски в нём нет, а попытка её отправить в очередь выдаст NotRegistered.

В ПР я привёл регистрацию тасок к тому, как описано в документации. Понимаю, что у нас на это нет тестов, но я честно скопировал и вставил из другого рабочего проекта. Поэтому предлагаю смёрджить, если ни у кого нет возражений.

from app.celery import celery as celery_app


__all__ = ["celery_app"]
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

На одном из последних проектов я делал ровно такой же фикс (единственно, вызов autodiscover_tasks не изменял). Удивляет, что до этого почему-то ни разу не сталкивался с этой проблемой.

@nvo87
Copy link
Contributor

nvo87 commented Mar 23, 2026

спасибо 👍

у нас на это нет тестов

на текущее решение у нас тоже нет тестов, хе-хе )

@f213 f213 merged commit 322263e into master Mar 23, 2026
3 checks passed
@f213 f213 deleted the celery-task-import-fix branch March 23, 2026 19:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

3 participants