36

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

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

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

4

2 回答 2

45

(我是路易吉的作者)

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

于 2015-12-05T23:50:07.517 回答
26

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

芹菜:

什么是芹菜?

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

为什么要使用芹菜?

  • 它易于使用且具有许多功能。
  • django-celery:提供与 Django 的良好集成。
  • 花:Celery 分布式任务队列的实时监控和 Web 管理。
  • 活跃的大型社区(基于 Stackoverflow 活动、Pyvideos、教程、博客文章)。

路易吉

什么是路易吉?

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

为什么要使用路易吉?

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

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

于 2014-09-06T20:58:56.560 回答