如何使用Celery配置不同的工作池?

4 投票
1 回答
3939 浏览
提问于 2025-04-16 09:49

我需要部署一个排队执行的服务,通常会有以下三种类型的工作者:

  1. 一种定期的、优先级较低的工作类型,这种工作需要很长时间来完成,可以一个接一个地处理;这些工作在系统中最多只需要使用0到2个工作者。

  2. 一种定期的、对截止时间敏感的工作类型,这种工作需要短到中等的时间(比如,最多5分钟)。

  3. 一种临时的工作类型,优先级高于第一种,但可以和第二种交替进行。当这种工作到来时,任何在此时处于空闲状态的第二类工作者都应该来处理它,但不能让第二类工作者完全没有工作。

这三种工作类型其实是同样的任务,唯一的区别在于它们是如何被请求的;它们会使用相同的输入并生成相同的输出,但每种类型的性能保证是不同的。

我该如何使用celery来实现这个呢?

1 个回答

3

你可以使用 Celery 路由 来实现你的目标。简单来说,你需要设置三个不同的路由键,然后让多个 Celery 工作进程(可以自定义配置)只监听你设置的特定路由键。

撰写回答