首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django-celery -如何连续执行任务?

Django-celery -如何连续执行任务?
EN

Stack Overflow用户
提问于 2014-01-17 23:27:27
回答 2查看 823关注 0票数 3

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

我有以下方案:

代码语言:javascript
复制
Task Main
    - Subtask 1
        - Subtask 2

我需要的是,当我调用"Task Main“时,进程将一直运行到最后(子任务2),而不会启动任何新的"Task Main”。

我如何保证这一点呢?

EN

回答 2

Stack Overflow用户

发布于 2014-01-18 00:33:54

一种策略是通过使用锁。芹菜任务食谱在http://docs.celeryproject.org/en/latest/tutorials/task-cookbook.html上有一个example

票数 1
EN

Stack Overflow用户

发布于 2014-01-18 08:35:07

如果我知道你只想一个接一个地执行MainTask,并且你想在你的MainTask中调用子任务。如果不创建单独的队列和至少2个单独的工作进程,这是不可能的。因为如果您将所有任务存储在同一队列中,则会将芹菜视为相同的任务。

因此,is的解决方案是:

celeryd --queue=main_queue

  • map =1将sub_queue

  • Start子任务映射到此队列的main_queue

  • Start独立工作线程celeryd
  1. 将MainTask映射到此队列的单独工作进程

应该行得通!

但我认为这是一个复杂的架构,如果你重新设计你的流程,也许你可以让它变得更容易。

你也会发现这很有用(它对你很有用,但它可以并行运行MainTask):你应该尝试使用链,这是http://docs.celeryproject.org/en/latest/userguide/tasks.html#avoid-launching-synchronous-subtasks文档中的一个例子。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21189564

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档