基于 Python 的异步工作流模块:celery 工作流和 luigi 工作流有啥区别?

Posted

技术标签:

【中文标题】基于 Python 的异步工作流模块:celery 工作流和 luigi 工作流有啥区别?【英文标题】:Python based asynchronous workflow modules : What is difference between celery workflow and luigi workflow?基于 Python 的异步工作流模块:celery 工作流和 luigi 工作流有什么区别? 【发布时间】:2014-03-24 21:55:38 【问题描述】:

我使用 django 作为 Web 框架。我需要一个可以执行同步和异步(批处理任务)任务链的工作流引擎。我发现 celery 和 luigi 作为批处理工作流程。我的第一个问题是这两个模块之间有什么区别。

Luigi 允许我们重新运行失败的任务链,并且只有失败的子任务才能重新执行。 celery 呢:如果我们重新运行链(在修复失败的子任务代码之后),它是否会重新运行已经成功的子任务?

假设我有两个子任务。第一个创建一些文件,第二个读取这些文件。当我将这些放入芹菜链中时,由于第二个任务中的错误代码,整个链失败。当我在第二个任务中修复代码后重新运行链时会发生什么?第一个任务会尝试重新创建这些文件吗?

【问题讨论】:

【参考方案1】:

(我是路易吉的作者)

Luigi 不适用于同步低延迟框架。它适用于运行数小时或数天的大型批处理过程。所以我认为对于你的用例,Celery 实际上可能会稍微好一点

【讨论】:

【参考方案2】:

更新:正如 Erik 指出的那样,Celery 是这种情况下的更好选择。

芹菜:

什么是芹菜?

Celery 是一个简单、灵活且可靠的分布式系统,可处理大量消息,同时为操作提供维护此类系统所需的工具。

为什么要使用 Celery?

使用简单,功能丰富。 django-celery:提供与 Django 的良好集成。 flower:Celery 分布式任务队列的实时监控和 Web 管理。 活跃的大型社区(基于 *** 活动、Pyvideos、教程、博客文章)。

路易吉

什么是路易吉?

Luigi(Spotify 最近开源的 Python 框架)是一个 Python 包,可帮助您构建复杂的批处理作业管道。它处理依赖关系解析、工作流管理、可视化、处理故障、命令行集成等等。

为什么要使用 Luigi?

内置对 Hadoop 的支持。 足够通用,可用于从简单的任务执行和本地工作站上的监控到启动大量处理任务链(这些任务链可以在几天内在多台机器之间同步运行)。 Lugi 的可视化器:提供工作流依赖图的良好可视化概览。

结论:如果您需要一个工具来简单地安排任务并运行它们,您可以使用 Celery。如果您正在处理大数据和大型处理,您可以选择 Luigi。

【讨论】:

以上是关于基于 Python 的异步工作流模块:celery 工作流和 luigi 工作流有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章

Python开发模块:Celery 分布式异步消息任务队列

python之celery队列模块

python-celery专注于实现分布式异步任务处理任务调度的插件!

python任务调度模块celery

python celery 模块

Celery