【问题标题】:Understanding how basic celery message qeueing works了解基本 celery 消息队列的工作原理
【发布时间】:2011-11-04 19:08:37
【问题描述】:

我已经实现了一个使用 celery 进行消息队列的小测试,我只是想确保我了解它在基本级别上的工作原理(Django-Celery,使用 Redis 作为代理)。

我的理解是,当我调用启动异步任务时,任务信息放在redis中,然后连接到broker的celeryd实例消费并执行任务。这基本上是正在发生的事情吗?

如果我设置了一个应该每小时执行一次的周期性任务,该任务会在所有任务使用者上执行吗?如果是这样,有没有办法限制它,以便只有一个消费者会执行周期性任务?

【问题讨论】:

    标签: django message-queue django-celery


    【解决方案1】:

    workers 将使用代理所包含的尽可能多的消息。如果您有 8 个工作人员,但只有 1 条消息,则 8 个工作人员中的 1 个将使用该消息,执行任务。

    【讨论】:

    • 我刚刚在文档中看到它声明定期任务只应运行一个 celerybeat 实例,否则该任务将被执行多次。感谢您验证我的想法。
    • 我认为您所指的是提到一次只有一个调度程序正在运行一个调度程序。这只是意味着,如果您有两个调度程序,将相同的任务放入队列中,那么它将被执行两次。
    猜你喜欢
    • 1970-01-01
    • 2014-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-12
    • 1970-01-01
    • 2016-02-20
    • 2012-12-11
    相关资源
    最近更新 更多