Как выполнить задачу apply_async в отложенной задаче - PullRequest
0 голосов
/ 02 мая 2018

Я хочу выполнить задачу 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'? Есть ли другой способ сделать это?

1 Ответ

0 голосов
/ 02 мая 2018

Я сам решил этот вопрос

Использование

task(func).apply_async(countdown=delay_seconds)

где task () вернет прокси сельдерея вместо

func.apply_async(countdown=delay_seconds)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...