У меня довольно странная проблема с обнаружением задач, которое работает только частично в приложении 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