了解基本 celery 消息队列的工作原理

发布于 2024-12-13 18:33:14 字数 253 浏览 0 评论 0原文

我已经实现了一个小测试,它使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

余生共白头 2024-12-20 18:33:14

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文