2014-02-23 38 views
18

我正在使用django作为web框架。我需要一个工作流引擎,可以执行同步以及异步(批量任务)任务链。我发现芹菜和luigi作为批处理工作流程。我的第一个问题是这两个模块有什么区别。基于Python的异步工作流模块:芹菜工作流和luigi工作流有什么区别?

Luigi允许我们重新运行失败的任务链,只有失败的子任务才会重新执行。怎么样芹菜:如果我们重新运行链(修复失败的子任务代码后),它会重新运行已经成功的子任务吗?

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

回答

13

更新:正如Erik所指出的,芹菜是这种情况下更好的选择。

芹菜:

什么是芹菜?

芹菜是一个简单,灵活和可靠的分布式系统来处理大量的消息,同时提供操作维护这样的系统所需的工具。

为什么要使用芹菜?

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

路易吉

什么是路易吉?

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

为什么要使用Luigi?

  • 内置对Hadoop的支持。
  • 通用性足以用于从本地工作站上的简单任务执行和监视到启动大量连锁处理任务,这些连锁处理任务可在多天内跨越多台机器同步运行。
  • Lugi的visualiser:给出了一个很好的工作流依赖图的视觉概览。

结论:如果你需要一个工具,只是简单地安排任务&运行它们,你可以使用芹菜。如果你正在处理大数据&巨大的处理,你可以去路易吉。

20

(我路易吉的作者)

路易吉并不意味着同步低延迟架构。它适用于运行数小时或数天的大批量进程。所以我认为对你的用例来说,芹菜实际上可能会稍好些