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

Posted

技术标签:

【中文标题】如何使用 celery 配置不同的工作池?【英文标题】:How can I configure different worker pools using celery? 【发布时间】:2011-06-07 14:49:17 【问题描述】:

我需要使用(通常)以下三类工作人员部署排队执行服务:

    一个周期性的、低优先级的作业类,需要很长时间,可以串行处理;这些作业最多只能使用系统中的 0..2 个工人。

    周期性的、对截止日期敏感的作业类,需要中短时间(例如,5 分钟结束)

    一种特殊作业类,其优先级高于 #1,但可以与 #2 交错。任何在此类工作进入时处于非活动状态的 #2 类的任何工人都应该处理它,而不要让 #2 的工人池挨饿

所有三个工作类别都是相同的任务,它们之间的唯一区别是它们的请求方式;它们将采用相同的输入并生成相同的输出,但每个都有不同的性能保证。

如何使用 celery 实现这一点?

【问题讨论】:

【参考方案1】:

您可以使用Celery Routing 来实现您的目标。您要做的是设置三个不同的路由键,并在您设置的特定路由键上列出多个 celery worker(使用自定义配置)。

【讨论】:

如果你启动一个worker到一个队列“celery -A proj worker -Q feeds”,你如何指定一个worker来寻找一个特定的路由键?

以上是关于如何使用 celery 配置不同的工作池?的主要内容,如果未能解决你的问题,请参考以下文章

我应该在 celery 中使用 prefork、eventlet 或 gevent 哪个池类?

我如何在 API 和工作人员中使用具有不同代码库的 celery

如何在 Django 和 Celery 中配置多个代理?

如何在 celery 中安排工作日感知工作

如何在heroku服务器中配置django-celery

如何在远程系统上配置和运行 celery worker