36

Web フレームワークとして django を使用しています。タスクの同期および非同期 (バッチ タスク) チェーンを実行できるワークフロー エンジンが必要です。バッチ処理ワークフローとしてセロリとルイージを見つけました。私の最初の質問は、これら 2 つのモジュールの違いは何かということです。

Luigi を使用すると、失敗した一連のタスクを再実行でき、失敗したサブタスクのみが再実行されます。セロリはどうですか? (失敗したサブタスク コードを修正した後に) チェーンを再実行すると、既に成功したサブタスクが再実行されますか?

2 つのサブタスクがあるとします。最初のものはいくつかのファイルを作成し、2番目のものはそれらのファイルを読み取ります。これらをセロリのチェーンに入れると、2番目のタスクのバグコードが原因でチェーン全体が失敗します。2 番目のタスクでコードを修正した後にチェーンを再実行するとどうなりますか? 最初のタスクはそれらのファイルを再作成しようとしますか?

4

2 に答える 2

45

(私はルイージの作者です)

Luigi は同期低レイテンシ フレームワーク向けではありません。これは、数時間または数日にわたって実行される大規模なバッチ プロセスを対象としています。したがって、あなたのユースケースでは、セロリは実際にはわずかに優れていると思います

于 2015-12-05T23:50:07.517 に答える
26

更新:エリックが指摘したように、この場合はセロリの方が適しています。

セロリ:

セロリとは?

Celery は、膨大な量のメッセージを処理するシンプルで柔軟で信頼性の高い分散システムであり、そのようなシステムを維持するために必要なツールを操作に提供します。

セロリを使用する理由

  • 使い方は簡単で、多くの機能があります。
  • django-celery: Django との優れた統合を提供します。
  • flower: Celery 分散タスク キューのリアルタイム モニターおよび Web 管理。
  • アクティブで大規模なコミュニティ (Stackoverflow アクティビティ、Pyvideos、チュートリアル、ブログ投稿に基づく)。

ルイージ

ルイージとは?

Luigi (Spotify が最近オープン ソース化した Python フレームワーク) は、バッチ ジョブの複雑なパイプラインを構築するのに役立つ Python パッケージです。依存関係の解決、ワークフロー管理、視覚化、失敗の処理、コマンド ライン統合などを処理します。

ルイージを使用する理由

  • Hadoop のビルトイン サポート。
  • ローカルワークステーションでの単純なタスクの実行と監視から、数日間にわたって多くのマシン間で同期して実行できる処理タスクの巨大なチェーンの起動まで、すべてに使用できる汎用性があります。
  • Lugi のビジュアライザー: ワークフローの依存関係グラフの優れた視覚的概要を提供します。

結論:単純にタスクをスケジュールして実行するためのツールが必要な場合は、Celery を使用できます。ビッグデータと巨大な処理を扱っている場合は、Luigi を選ぶことができます。

于 2014-09-06T20:58:56.560 に答える