【发布时间】:2014-11-22 00:20:01
【问题描述】:
我的要求是从 Celery 的任务中创建另一个任务。传递的参数将取决于父任务的输出。是的,我希望这是一种递归,它在某个点停止(基于一些 IF 子句)。在 Celery 中可以做到这一点吗?
我研究了 Group/Chord/etc 子任务原语。但是,它们不像我想要的那样灵活。 有没有办法做到这一点?
【问题讨论】:
标签: celery
我的要求是从 Celery 的任务中创建另一个任务。传递的参数将取决于父任务的输出。是的,我希望这是一种递归,它在某个点停止(基于一些 IF 子句)。在 Celery 中可以做到这一点吗?
我研究了 Group/Chord/etc 子任务原语。但是,它们不像我想要的那样灵活。 有没有办法做到这一点?
【问题讨论】:
标签: celery
是的。您可以在 Celery 的任务中启动新任务。是的,您可以在 Celery 中递归地启动任务。是的,您可以在任务中编写 if then else 条件。最大的问题是你为什么要这样做?
@app.task
def mytask(*args, **kwargs):
if test_basecase(*args, **kwargs):
return root_case
else:
res = mytask.apply_async(*handle(*args), **khandle(**kwargs))
#probably starting several tasks then joining them
return res.result
【讨论】: