我正在使用Celery 3.1。我只需要在最后一个任务结束时执行下一个任务。我怎样才能确保没有两个任务同时工作?我已经阅读了文档但我不清楚。
我有以下方案:
Task Main
- Subtask 1
- Subtask 2
我打电话给#34;任务主要"该过程将持续到结束(子任务2),没有任何新的"任务主要"开始。
我该如何保证?
答案 0 :(得分:1)
如果我理解您只想逐个执行MainTask,并且想要在MainTask中调用子任务。如果不创建单独的队列和至少2个独立的工作人员,这是不可能的。因为如果您将存储在同一队列中,则所有任务都会将芹菜视为相同的任务。
解决方案是:
应该工作!
但我认为这是一个复杂的架构,如果您重新设计流程,可能会让您更容易。
此外,您可以找到这个有用的(它适用于您,但它可以运行并行MainTask): 您应该尝试使用链,这是Celery的文档示例:http://docs.celeryproject.org/en/latest/userguide/tasks.html#avoid-launching-synchronous-subtasks。
答案 1 :(得分:0)
一种策略是使用锁。 Celery任务指南在example处有一个http://docs.celeryproject.org/en/latest/tutorials/task-cookbook.html。