目前我的工作,需要执行一些背景作业(主要用于电子邮件发送和大量数据库更新)Python项目。 我使用Redis的任务经纪人。 所以在这一点上我有两个候选人: 芹菜和RQ 。 我曾与这些作业队列一些经验,但我要问你们分享你使用这个工具的经验。 所以。
- 什么利弊使用芹菜与RQ。
- 合适的项目/任务的任何示例使用芹菜与RQ。
芹菜看起来很复杂,但它的功能齐全的解决方案。 其实我不认为我需要所有这些功能。 来自对岸RQ很简单(如配置,集成),但似乎缺乏一些有用的功能(如任务撤销,代码自动重新加载)
目前我的工作,需要执行一些背景作业(主要用于电子邮件发送和大量数据库更新)Python项目。 我使用Redis的任务经纪人。 所以在这一点上我有两个候选人: 芹菜和RQ 。 我曾与这些作业队列一些经验,但我要问你们分享你使用这个工具的经验。 所以。
芹菜看起来很复杂,但它的功能齐全的解决方案。 其实我不认为我需要所有这些功能。 来自对岸RQ很简单(如配置,集成),但似乎缺乏一些有用的功能(如任务撤销,代码自动重新加载)
这是在试图回答这个确切的同样的问题我已经找到。 这也可能是不全面的,甚至可能是在某些方面不准确的。
总之,RQ被设计成简单各地。 芹菜的设计更加强劲。 他们都是优秀的。
监测。 芹菜的花和RQ仪表盘都设置非常简单,给您至少90%的你会不会想要的所有信息
Broker支持。 芹菜是明显的赢家,RQ只支持Redis的。 这意味着在“什么是经纪人”,少文档,但也意味着你不能切换经纪人今后如果Redis的不再是你的作品。 例如, Instagram的同时考虑了Redis的和RabbitMQ的芹菜 。 这很重要,因为不同的经纪人有不同的担保如Redis的不能 (写作的)保证您的邮件传递100%。
优先级队列。 RQS优先级队列模式是简单而有效- 工人队列顺序读取 。 芹菜需要旋转了多位工人从不同的队列消费。 这两种方法的工作
操作系统支持。 芹菜是明显的赢家在这里,因为RQ只能在支持系统上运行fork
如Unix系统
语言支持。 RQ只支持Python,而芹菜可以让你从一种语言发送任务,不同的语言
API。 芹菜是非常灵活的(多个结果后端,不错的配置形式,工作流程画布的支持),但自然这种力量可能会造成混淆。 相比之下,RQ API很简单。
子任务的支持。 芹菜支持子任务(例如创建从现有任务中的新任务)。 我不知道,如果RQ不
社区和稳定性。 芹菜是可能更成熟,但它们都是活动的项目。 至于写作,芹菜有〜Github上3500分,而RQ有〜2000年和这两个项目显示出积极发展
在我看来,芹菜是不一样复杂的声誉可能会导致你相信,但你必须RTFM。
因此,任何人,为什么会愿意换取RQ的(可以说是更全功能)芹菜? 在我看来,这一切都归结到简单。 通过限制自己的Redis + Unix中,RQ提供简单的文档,简单的代码库,和简单的API。 这意味着你(和潜在的贡献者项目),可以集中精力,而不必保留关于任务队列系统的详细信息在你的工作内存上你所关心的代码。 我们每个人都有多少细节可以在我们的头上,在一次的限制,并通过消除需要保持任务队列的细节在那里RQ让我们回到你所关心的代码。 这简化是在像跨语言任务队列,广泛的操作系统支持,100%可靠的消息保证,并轻松切换消息代理能力的功能为代价的。
芹菜是没有那么复杂。 在它的核心,你做的一步从步骤配置tutorials
,创建一个celery
实例,装点你的函数@celery.task
然后运行该任务my_task.delay(*args, **kwargs)
从你自己的评估来看,似乎你有欠缺(键)的功能或周围有一些多余的悬挂之间进行选择。 这是不是太辛苦在我的书的选择。