Celery动态添加任务链

时间:2017-05-15 20:07:49

标签: python django celery

我正在使用带有Django的芹菜3。
我有一个数据库中的工作列表。用户可以启动启动芹菜任务的特定工作。
现在我希望用户能够启动多个作业,并且应该将它们添加到芹菜队列并一个接一个地处理它们,而不是像async那样并行处理它们。

我正在尝试使用celery创建一个作业调度程序,用户可以选择要执行的作业,它们将按顺序执行。
如果我使用chain(),那么我无法动态地向链中添加新任务。

什么是最佳解决方案?

1 个答案:

答案 0 :(得分:1)

在Celery中,最好使用link代替chain

来自documentation

s = add.s(2, 2)
s.link(mul.s(4))
s.link(log_result.s())

您可以看到如何通过循环遍历所需任务并链接每个人的签名来动态添加要执行的任务。循环之后,您需要调用类似s.apply_async(...)的代码来执行它们。