У задачи Celery отключен бэкенд, пока не будет импортирована другая задача (из другого приложения)

У меня проблема с celery, redis backend в среде django.

Когда я импортирую задачу celery из одного файла, бэкенд становится DisabledBackend, и любые вызовы delay() зависают/блокируются

Однако когда я импортирую задачу celery из другого файла, бэкендом является RedisBackend и любые вызовы delay() работают нормально.

Странно то, что после импорта второй задачи, бэкенд первой задачи меняется на RedisBackend и затем работает нормально.

См. пример ниже:

>>> from file1 import task1
>>> task1.backend
<celery.backends.base.DisabledBackend object at 0x7f2bf3582470>

>>> from file2 import task2
>>> task2.backend
<celery.backends.redis.RedisBackend object at 0x7f2bf2bc7668>

# And now the very weird bit, the backend of task1 now is correct
>>> task1.backend
<celery.backends.redis.RedisBackend object at 0x7f2bf2bc7668>

Обе задачи определяются с помощью следующей конструкции

from celery import shared_task
@shared_task
def task1():
    # Logic here

from celery import shared_task
@shared_task
def task2():
    # Logic here

Я не могу найти ни одной причины, почему это может произойти.

Когда я просматриваю журнал celery, я вижу, что обе задачи зарегистрированы.

- ** ---------- [config]
- ** ---------- .> app:         *redacted*
- ** ---------- .> transport:   redis://localhost:6379//
- ** ---------- .> results:     redis://localhost:6379/
- *** --- * --- .> concurrency: 2 (prefork)
-- ******* ---- .> task events: OFF (enable -E to monitor tasks in this worker)
--- ***** ----- 
 -------------- [queues]
                .> celery           exchange=celery(direct) key=celery
                

[tasks]
  . file1.task1
  . file2.task2

Если у кого-то есть какие-либо мысли по этому поводу, они будут очень признательны.

Вернуться на верх