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