Обнаружение Celery Task в Django App только частично работает - PullRequest
1 голос
/ 26 марта 2019

У меня довольно странная проблема с обнаружением задач, которое работает только частично в приложении Django.

У меня есть приложение со структурой вроде:

app\
 |>celery.py
  >tasks\
   |>__init__.py
   |>a.py
   |>b.py
   |>c.py

celery.py:

class CeleryAppConfig(AppConfig):
    name = 'taskapp'
    verbose_name = 'Celery Config'

    def ready(self):
        installed_apps = [app_config.name for app_config in apps.get_app_configs()]
        app.autodiscover_tasks(lambda: installed_apps, force=True)

Init.py:

from .a import *
from .b import *
from .c import *

a.py b.py & c.py@

from celery import shared_task

@shared_task(bind=True)
def Task(self):
    #do stuff.

Проблема в том, что, хотя задачи в a.py и b.py обнаруживаются автоматически, задачи в c.py - нет.

Копирование функции из c.py в a.py означает, что она распознана, а обратная - нет.

В конечном итоге я могу заставить его работать, не имея задач в нескольких файлах, но это очень раздражает. Я использую Python 3.6 на Alpine с django 2 и сельдереем 4.2

...