我正在将芹菜 3 与 Django 一起使用。
我在数据库中有一个工作列表。用户可以启动启动芹菜任务的特定作业。
现在我希望用户能够启动多个作业,它应该将它们添加到芹菜队列中并一个接一个地处理它们,而不是像异步那样并行处理它们。
我正在尝试使用芹菜创建一个作业调度程序,用户可以在其中选择要执行的作业,并且它们将以顺序方式执行。
如果我使用chain()
那么我无法动态地向链添加新任务。
最好的解决方案是什么?
一个更好的原语是link
而不是chain
在 Celery 中。
从文档中:
s = add.s(2, 2)
s.link(mul.s(4))
s.link(log_result.s())
您可以看到这如何允许您通过在循环中循环访问所需的任务并链接每个任务的签名来动态添加要执行的任务。在循环之后,您需要调用类似s.apply_async(...)
的东西来执行它们。