如何在延迟任务

时间:2018-05-02 09:25:00

标签: python celery

我想在延迟的任务中执行apply_aysnc任务。但我得到一个错误'function'对象没有属性'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)

我发现芹菜可以执行'测试'功能。然后我想在TaskA中结果为True时执行func,但是当我尝试'apply_aysnc'TaskB时它会引发异常。如何将func作为“任务”对象?还有其他办法吗?

1 个答案:

答案 0 :(得分:0)

我自己解决了这个问题

使用

topmostViewController

其中task()将返回芹菜代理,而不是

task(func).apply_async(countdown=delay_seconds)