У меня есть задача с сельдереем:
@task
def foo():
part1()
part2()
part3()
... что я разбиваюсь на цепочку подзадач
@task
def foo():
@task
def part1():
...
@task
def part2():
...
@task
def part3():
...
chain(part1.s(), part2.s(), part3.s()).delay()
Подзадачи являются внутренними функциями, потому что я не не хочу, чтобы они выполнялись вне контекста родительской задачи. Проблема в том, что мой работник не обнаруживает и / или не регистрирует внутренние задачи (я использую autoregister
для обнаружения приложений и модулей задач). Если я перенесу их на тот же уровень в модуле, что и родительская задача foo
, она будет работать нормально.
Поддерживает ли сельдерей внутренние функции как задачи? Если да, то как мне заставить работников зарегистрировать их?