我需要使用(通常)以下三类工作人员部署排队执行服务:
一个周期性的、低优先级的作业类,需要很长时间,可以串行处理;这些作业最多只能使用系统中的 0..2 个 worker。
一个定期的、对截止日期敏感的工作类,需要中短时间(例如,5 分钟结束)
一个临时作业类,其优先级高于 #1,但可以与 #2 交错。当此类工作进入时,来自第 2 类的任何不活动的 worker 都应该处理它,而不会让 worker 池因 #2 而挨饿
所有三个作业类都是相同的任务,它们之间的唯一区别是它们的请求方式;它们将采用相同的输入并生成相同的输出,但每个都有不同的性能保证。
我如何使用 celery 实现这个?
最佳答案
您可以使用 Celery Routing实现你的目标。您要做的是设置三个不同的路由键,并让多个 celery worker(具有自定义配置)列出仅您设置的特定路由键。
关于python - 如何使用 celery 配置不同的工作池?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4665441/