了解基本 celery 消息队列的工作原理
我已经实现了一个小测试,它使用 celery 进行消息队列,我只是想确保我了解它在基本层面上的工作原理(Django-Celery,使用 Redis 作为代理)。
我的理解是,当我调用启动异步任务时,任务信息被放置在redis中,然后连接到代理的celeryd实例消费并执行该任务。这本质上是正在发生的事情吗?
如果我设置一个应该每小时执行一次的定期任务,该任务是否会在所有任务使用者上执行?如果是这样,有没有办法限制它,以便只有一个消费者才能执行周期性任务?
I've implemented a small test which uses celery for message queueing and I just want to make sure I understand how it works on a basic level (Django-Celery, Using Redis as a broker).
My understanding is that when I place a call to start an asyncronous task, the task information is placed in redis and then a celeryd instance connected to the broker consumes and executes the task. Is this essentially what is happening?
If I setup a periodic task thats supposed to execute once every hour does that task get executed on all task consumers? If so is there a way to limit it so that only one consumer will ever execute a periodic task?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
workers
将消耗与代理包含的消息一样多的消息。如果您有 8 个工作线程,但只有 1 条消息,则 8 个工作线程中的 1 个将消费该消息,执行任务。The
workers
will consume as many messages as the broker contains. If you have 8 workers, but only 1 message, 1 of the 8 workers will consume the message, executing the task.