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

use*_*061 32 python celery luigi

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

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

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

小智 37

(我是Luigi的作者)

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


Chi*_*and 21

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

芹菜:

什么是芹菜?

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

为何使用芹菜?

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

路易吉

路易吉是什么?

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

为什么要用Luigi?

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

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