【问题标题】:How to execute a apply_async task in a delayed task如何在延迟任务中执行 apply_async 任务
【发布时间】:2018-05-02 09:25:00
【问题描述】:

我想在延迟任务中执行 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)

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

【问题讨论】:

    标签: python celery


    【解决方案1】:

    我自己解决了这个问题

    使用

    task(func).apply_async(countdown=delay_seconds)
    

    task() 将返回一个 celery 代理,而不是

    func.apply_async(countdown=delay_seconds)
    

    【讨论】:

      猜你喜欢
      • 2015-09-14
      • 1970-01-01
      • 2013-11-11
      • 1970-01-01
      • 2018-10-21
      • 1970-01-01
      • 2012-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多