Celery 动态添加任务到链

roh*_*u19 7 python django celery

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

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

什么是?最好的解决方案?

zar*_*vic 2

一个更好的原语是用Celerylink代替。chain

文档中:

s = add.s(2, 2)
s.link(mul.s(4))
s.link(log_result.s())
Run Code Online (Sandbox Code Playgroud)

您可以看到这如何允许您通过在循环中迭代所需的任务并链接每个任务的签名来动态添加要执行的任务。在循环之后,您可能需要调用类似的方法s.apply_async(...)来执行它们。