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

Posted

技术标签:

【中文标题】Python任务队列替代方案和框架[关闭]【英文标题】:Python task queue alternatives and frameworks [closed] 【发布时间】:2018-03-13 01:23:54 【问题描述】:

对于 Python 3,task/job queues 似乎有不同的实现:

    Celery,流行但显然未维护且陈旧; RQ,对此我知之甚少; TaskTiger,类似RQ,我对此知之甚少; Huey,类似RQ,我对此知之甚少; WorQ 最后一次更新是在 2016 年。

还有一些基于“云”的解决方案,例如 Google’s Task Queue API 或 AWS’s Cloud Watch Events,但这只是最后的手段。

对于我的项目,我正在寻找一个 stableactive 任务队列实现。过去一年我一直在使用 Celery,但缺乏支持和不注意现有的 bug 令人担忧。

存在哪些替代方案?

【问题讨论】:

更多链接的相关文章:fullstackpython.com/task-queues.html 这里是队列框架的集合:queues.io Celery 既不是无人维护也不是陈旧的。问题正在关闭。它仍然是 Python 行业的事实标准。不说是唯一有效的选择,只说它是维护和健壮的。 @Akhorus:AFAIK 离开了 Celery 的维护者这个项目,几个月来,它一直在没有支持(ICQ、Github、邮件列表)的情况下坐在那里积累问题。过去几周发生了一系列活动,看起来有人接管了维护。 这不是真的...看看有多少issues已经关闭了,他们即将出稳定版4.2.0(现在处于RC3状态)。 windows 的开发在 Celery 3 上停止了,所以如果这就是你的意思,你可以说它“陈旧” 【参考方案1】:

一个新的替代方案是django-carrot,这是由于我们需要一个轻量级的 Celery 替代方案,同时仍然提供对 RabbitMQ 的支持(我认为您提到的其他替代方案都是基于 Redis)

Django-carrot 仍在开发中,预计将在未来几周内在我公司投入生产

免责声明 - 我是 django-carrot 的作者

【讨论】:

谢谢!这是怎么回事,它会独立运行(即没有 django)还是使用Pyramid? 我们从 10 月中旬开始使用它。它旨在仅与 Django 一起使用(因为这是我们所有的 Web 应用程序都使用的)。由于通过我们的 Django 应用程序运行的长时间运行的任务数量对最终用户输入非常敏感,因此我们用例的一个关键部分是能够将日志写入项目数据库,以便可以跟踪和调试它们轻松【参考方案2】:

我写了Dramatiq,特别是因为我对 Celery 多年来专业使用它越来越感到沮丧。查看motivation 页面“为什么”以及 Dramatiq、Celery 和 RQ 之间的功能比较。一些亮点:

积极开发并在生产中使用 很棒的文档 自动重试 代码自动重新加载 锁和速率限制 redis 和 rabbitmq 支持

【讨论】:

我已经使用 Dramatiq for Bookalope 大约一个月了,它就像一个魅力。干得好,博格丹? Dramatiq 真的很棒 - 简单、灵活、强大 在几个项目中使用了 Dramatiq,绝对推荐它 Celery 现在支持任务优先级、自动重试 - docs.celeryproject.org/en/stable/… 嘿@Bogdan Pop,你能告诉我如何在基于 linux 的环境中将它作为守护进程运行吗?或者任何其他合适的方式在生产中部署它?【参考方案3】:

RabbitMQ 小伙伴们推荐Pika 库:https://github.com/pika/pika 您可以在他们的网站上找到简单直观的示例:https://www.rabbitmq.com/tutorials/tutorial-one-python.html

【讨论】:

对于任何偶然发现此问题的人:我们试图在 pika 的 $DAYJOB 上推出我们自己的作业队列,我现在正在探索库来替换该系统。 @AstraLuma,哈哈。

以上是关于Python任务队列替代方案和框架[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

关于消息队列速率的解决方案

获取 Google App Engine 任务队列中的任务

采用简易的环形延时队列处理秒级定时任务的解决方案

Java 消息队列任务的平滑关闭

python3+celery+redis实现异步任务

redis缓存队列+MySQL +php任务脚本定时批量入库