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

时间:2014-02-23 11:08:42

标签: python celery luigi

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

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

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

2 个答案:

答案 0 :(得分:34)

(我是Luigi的作者)

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

答案 1 :(得分:18)

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

<强>芹菜:

什么是芹菜?

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

为什么要使用芹菜?

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

<强>路易

Luigi是什么?

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

为什么要使用Luigi?

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

结论:如果您只是需要一个工具来安排任务&amp;运行它们你可以使用芹菜。如果你正在处理大数据和你可以去Luigi进行大量处理。

相关问题