我使用django作为Web框架。我需要一个工作流引擎,它可以执行同步和异步(批处理任务)任务链。我发现芹菜和luigi作为批处理工作流程。我的第一个问题是这两个模块之间的区别是什么。
Luigi允许我们重新运行失败的任务链,只有失败的子任务才能重新执行。那么芹菜呢:如果我们重新运行链(在修复失败的子任务代码之后),它会重新运行已经成功的子任务吗?
假设我有两个子任务。第一个创建一些文件,第二个读取这些文件。当我把它们放入芹菜链中时,整个链条由于第二个任务中的错误代码而失败。在第二个任务中修复代码后重新运行链时会发生什么?第一个任务是否会尝试重新创建这些文件?
答案 0 :(得分:34)
(我是Luigi的作者)
Luigi不适用于同步低延迟框架。它适用于运行数小时或数天的大批量流程。所以我认为对于你的用例,Celery实际上可能稍好一些
答案 1 :(得分:18)
更新:正如Erik指出的那样,Celery是这种情况的更好选择。
<强>芹菜:强>
什么是芹菜?
Celery是一个简单,灵活,可靠的分布式系统,用于处理大量消息,同时为操作提供维护此类系统所需的工具。
为什么要使用芹菜?
<强>路易强>
Luigi是什么?
Luigi(Spotify最近开源的Python框架)是一个Python包,可帮助您构建批处理作业的复杂管道。它处理依赖项解析,工作流管理,可视化,处理故障,命令行集成等等。
为什么要使用Luigi?
结论:如果您只是需要一个工具来安排任务&amp;运行它们你可以使用芹菜。如果你正在处理大数据和你可以去Luigi进行大量处理。