我在 Django 中使用 celery 3。
我有一个数据库中的工作列表。用户可以启动启动 celery 任务的特定作业。
现在我希望用户能够启动多个作业,它应该将它们添加到 celery 队列中并一个接一个地处理它们,而不是像异步那样并行处理。
我正在尝试使用 celery 创建一个作业调度程序,用户可以在其中选择要执行的作业,并且它们将按顺序执行。
如果我使用 chain()
那么我不能动态地向链中添加新任务。
什么是最好的解决方案?
最佳答案
您可以使用更好的原语是 link
而不是 chain
在 celery 。
来自 documentation :
s = add.s(2, 2)
s.link(mul.s(4))
s.link(log_result.s())
您可以看到这如何允许您通过在循环中迭代所需任务并链接每个任务的签名来动态添加要执行的任务。在循环之后你会想要调用类似
s.apply_async(...)
的东西来执行它们。
关于python - Celery 动态添加任务到链,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43987941/