Я хочу выполнить задачу apply_aysnc в отложенной задаче. Но я получаю сообщение об ошибке: объект «функция» не имеет атрибута «apply_async».
tasks.py
from celery import task
def Test(func, delay_seconds):
TaskA.apply_async((func, delay_seconds), countdown=1)
@task
def TaskA(func, delay_seconds):
result = xxx
if result:
func.apply_async(countdown=delay_seconds)
def TaskB():
xxx
Test.apply_async((TaskB, 600,), countdown=60)
Я обнаружил, что сельдерей может выполнять функцию «Тест». Затем я хочу выполнить func, когда результат True в TaskA, но он вызывает исключение, когда я пытаюсь применить «apply_aysnc» TaskB. Как сделать func объектом "Task"? Есть ли другой способ сделать это?
Я сам решил этот вопрос
Использовать
task(func).apply_async(countdown=delay_seconds)
где task () вернет прокси сельдерея вместо
func.apply_async(countdown=delay_seconds)