2022-06-11 (土)
* 軽量なワークフローエンジン
cron+適当に作ったWebUIで色々実行している処理をどうにかしたくて,ワークフローエンジン探してみる.たくさん見つかって迷うけど,試しにDaguを使ってみる.
最近はAirflowを使っておけば無難みたいな雰囲気があるけど,あまりPython書きたくないのとAirflow自体が大きすぎて躊躇していた.いろいろな事情でクラウド上で実行しにくい処理を部屋のNASの片隅で動かしていたりするのも移行したいのだけど,メモリ2GBしかないのでメモリを数GB使うようなやつは困る.
DaguはGoで実装されたシングルバイナリのツールでメモリもあまり食わなそうなのが良さげ.
まだ様子見中だけど,本格的に使うには足りないものが多いような気もする.ただ作りもシンプルなので,カスタマイズやデバッグはしやすそう.
Docker内で動かすので,REST API経由で操作したいけどREST APIからはワークフローにパラメータ渡せなかった.これは簡単に対応できそうなので適当に書き換えて使う.
一つのyamlファイルが1つのワークフローに対応していて,他のワークフローを呼び出したりできないように見えるけど,タスク内でdagu startコマンドを実行すれば良さげ?
悩ましいのが,1つのワークフローは同時実行できない.複数起動したり,前回の処理の完了を待たずに実行したいのだけど,前回の処理が動いていると単に失敗するのでポーリングしないといけない.