生产中的 Redis-Queue (RQ) 任务队列

Posted

技术标签:

【中文标题】生产中的 Redis-Queue (RQ) 任务队列【英文标题】:Redis-Queue (RQ) Task Queues in Production 【发布时间】:2018-12-20 07:41:14 【问题描述】:

我最近开始在我的 Django 程序中需要一个任务队列,我担心它在未来会变得多么强大,或者生产部署需要克服哪些问题。

我正在使用 Python 的 Redis-Queue 或 RQ 库,它比 Celery(我还没有完全学会)之类的东西更容易学习和使用。有人对此有任何意见吗?你认为 RQ 与 Redis 结合在生产环境中是否可行,或者你会使用其他东西吗?大型应用程序使用什么来进行任务排队?

【问题讨论】:

【参考方案1】:

据我所知,Celery 在生产环境中工作,对于 Python/Django,最成熟的基于分布式消息传递的同步任务队列/作业队列的实现,使用 Redis 作为代理就可以了。

您在生产中需要的不仅仅是发送一条简单的消息,而是一个高级 API:

缩放、自动缩放。 实时监控。 任务调度程序。 优先级。 多代理支持。 基于工作流的任务。

Celery 已经准备好了。

【讨论】:

【参考方案2】:

是的,redis 和 redis-queue 很容易设置。是的,它们可以在生产系统中使用。你也可以看看 RabbitMQ。它可以用作任务队列。它支持用于扩展的持久性和集群。

【讨论】:

你能告诉我RabbitMQ是否可以独立使用还是需要像Celery这样的东西来搭配它?我已经研究了 RabbitMQ,但似乎我必须使用 Celery 或构建某种自定义处理程序来配合它。 (编辑:我确实找到了***.com/questions/9077687/…,但仍然想要一些额外的观点。)

以上是关于生产中的 Redis-Queue (RQ) 任务队列的主要内容,如果未能解决你的问题,请参考以下文章

Heroku:使用 RQ 的 Python 后台任务

Java 线程中协作机制

Python任务队列替代方案和框架[关闭]

Redis入门 - 消息通知

Redis入门 - 消息通知

项目使用RQ队列的思考