我使用的是芹菜3.1。我只需要在最后一个任务完成时执行下一个任务。我如何保证不会有两个任务同时工作?我已经阅读了文档,但对我来说并不清楚。
我有以下方案:
Task Main
- Subtask 1
- Subtask 2我需要的是,当我调用"Task Main“时,进程将一直运行到最后(子任务2),而不会启动任何新的"Task Main”。
我如何保证这一点呢?
发布于 2014-01-18 00:33:54
一种策略是通过使用锁。芹菜任务食谱在http://docs.celeryproject.org/en/latest/tutorials/task-cookbook.html上有一个example。
发布于 2014-01-18 08:35:07
如果我知道你只想一个接一个地执行MainTask,并且你想在你的MainTask中调用子任务。如果不创建单独的队列和至少2个单独的工作进程,这是不可能的。因为如果您将所有任务存储在同一队列中,则会将芹菜视为相同的任务。
因此,is的解决方案是:
celeryd --queue=main_queue
应该行得通!
但我认为这是一个复杂的架构,如果你重新设计你的流程,也许你可以让它变得更容易。
你也会发现这很有用(它对你很有用,但它可以并行运行MainTask):你应该尝试使用链,这是http://docs.celeryproject.org/en/latest/userguide/tasks.html#avoid-launching-synchronous-subtasks文档中的一个例子。
https://stackoverflow.com/questions/21189564
复制相似问题