Django芹菜-如何连续执行任务?

Django芹菜-如何连续执行任务?,django,celery,django-celery,Django,Celery,Django Celery,我用的是芹菜3.1。我只需要在最后一个任务完成时执行下一个任务。我如何确保没有两个任务同时工作?我已经阅读了文档,但不清楚 我有以下计划: Task Main - Subtask 1 - Subtask 2 我需要在调用“Task Main”时,进程将一直运行到结束(子任务2),而不启动任何新的“Task Main” 如何确保这一点?一种策略是使用锁。芹菜任务食谱有一个at.如果我知道你只想一个接一个地执行MainTask,并且你想在MainTask中调用子任务。如果不

我用的是芹菜3.1。我只需要在最后一个任务完成时执行下一个任务。我如何确保没有两个任务同时工作?我已经阅读了文档,但不清楚

我有以下计划:

Task Main
    - Subtask 1
        - Subtask 2
我需要在调用“Task Main”时,进程将一直运行到结束(子任务2),而不启动任何新的“Task Main”


如何确保这一点?

一种策略是使用锁。芹菜任务食谱有一个at.

如果我知道你只想一个接一个地执行MainTask,并且你想在MainTask中调用子任务。如果不创建单独的队列和至少两个单独的工作人员,这是不可能的。因为若你们将所有任务都存储在同一个队列中,那个么所有任务都会像同样的任务一样寻找芹菜

因此,解决方案是:

  • 将MainTask映射到主队列
  • 为此队列启动单独的辅助进程,如: celeryd——并发性=1——队列=main\u队列
  • 将子任务映射到子队列
  • 为此队列启动单独的工作进程 celeryd—队列=子队列
  • 应该有用

    但我认为这是一个复杂的体系结构,如果您重新设计您的流程,可能会使它变得更容易

    您也会发现这很有用(它对您有用,但可以运行并行主任务): 您应该尝试使用链,以下是芹菜文档中的一个示例: