我想在延迟的任务中执行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)
我发现芹菜可以执行"测试"功能。然后我想在任务 A 中的结果为 True 时执行 func,但当我尝试"apply_aysnc"任务 B 时它会引发异常。如何将 func 作为"任务"对象?还有其他方法可以做到吗?
我自己解决了这个问题
用
task(func).apply_async(countdown=delay_seconds)
其中 task(( 将返回一个芹菜代理,而不是
func.apply_async(countdown=delay_seconds)