前提・実現したいこと
依存関係がある処理を待ち受けする場合に、どのように実装するか困っています。
以下のような処理を非同期・並列で実行する場合、プロセス3を実現するためのアイデアは何があるでしょうか?
・(ジョブ例)カレーを作る
プロセス1.食材を買いに行く(並列処理)
プロセス2.食材を加工する(並列処理)
プロセス3.全ての食材を同時に煮込む
・やりたいこと
ジョブはキューに積むこととする。
プロセス1・2は、可能な限り並列で作業します。(食材の数だけ処理がある)
プロセス1・2は、食材単位で依存関係があります。
プロセス1の失敗率は高いです。(売り切れや店休日など)
プロセス1はかなり重い処理です。
プロセス3は、プロセス1・プロセス2の前処理が全て完了したら開始することとする。
プロセス3は、何かしらのタスクが失敗していたら自動的には実行しない。
発生している問題・エラーメッセージ
プロセス1・2を並列で作業させるため、AWS SQSの分散メッセージキューを使おうと思っています。
しかし、並列化により、これまでは、単に逐次処理していたプロセス3の扱いに困ってしまいました。
プロセス3を実現するためには、プロセス1・プロセス2を構成する全タスクが完了したことを検知できなくてはいけません。
考えていること
・食材を買った、加工したなどの予想しているタスクの数とそのステータスを管理する(難しそう)
・依存関係と並列処理はトレードオフ?luigiなど依存関係を処理できるフレームワークを併用する?
・食材単位の並列化は難しいので、料理単位の並列化で妥協する
FW/ツールのバージョンなど
Python3.6
AWS SQS
Luigi
Airflow
Celery
データパイプラインを実装するのは初めてで、
参考書の紹介などなんでも知恵をお貸し頂けると幸いです。
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/04 15:25
2020/01/04 15:42
2020/01/04 16:18