【问题标题】:Celery all generated tasks status芹菜所有生成的任务状态
【发布时间】:2013-10-07 10:01:05
【问题描述】:

Django 在一个脚本运行中通过链产生多个 Celery 任务(例如,如果 / 在浏览器中打开,则通过延迟方法调用 1000 个任务。

如果在先前脚本运行中排队的任务仍在运行,我需要一些限制新任务生成的东西。

【问题讨论】:

    标签: django queue celery


    【解决方案1】:

    您可以通过设置限制一种类型的任务同时运行的数量:

    rate_limit = “1000/m” 
    

    => 这种类型的任务每分钟只能运行 1000 个。 (见http://docs.celeryproject.org/en/latest/userguide/tasks.html#list-of-options

    【讨论】:

      【解决方案2】:

      为此,您需要一个分布式锁,而 celery 本身不提供这种锁。

      对于这些类型的锁,我发现redis.Lock 在大多数情况下都很有用。如果您需要信号量,可以使用 redis 的原子 incr/decr 函数以及某种看门狗机制来确保您的进程仍在运行。

      【讨论】:

        猜你喜欢
        • 2012-02-06
        • 2014-07-31
        • 2020-11-22
        • 1970-01-01
        • 1970-01-01
        • 2017-04-23
        • 2012-11-16
        • 1970-01-01
        • 2020-07-09
        相关资源
        最近更新 更多