2018年下半期でdigdagに追加された機能


はじめに

この記事はMicroAd Advent Calendar 2018の10日目の記事です。
アドベントカレンダーも中盤戦に入って来ました。このあたりでちょっと軽めの記事を入れておきます。(決してさぼっているわけではありません)
ちなみにdigdagに関しては以下のような記事を過去に書いたので使ったことない方は参考にしていただければ( ◠‿◠ )

Digdagを使ったジョブ管理

ここ半年で追加された激アツ機能TOP3

v0.9.26からv0.9.31が対象です。
※アツさの基準は個人によるものです。

3位 タスクごとにログを表示

v0.9.28で導入されました。
Experimentalなので今後どうなるかわかりませんが、個人的にはとても見やすいです。

2位 param_set・param_getオペレータ

v0.9.31で導入されました。
パラメータを外部のデータストアに保存することの出来る機能です。
project間で共有しているデータを扱う際に便利そうです。
またs3-waitを使わないでprojectを跨いだ依存の解決にも使えそうです。(使ったことはありません)

簡単に動かしてみた例↓

redis-serevrを起動

redis-server

workflowと設定ファイルを準備

task.dig
+task:
  param_set>:
  key1: hoge
  key2: fuga

+task2:
  param_get>:
  key1: key_of_1
  key2: key_of_2

+task3:
  sh>: echo '${key_of_1} ${key_of_2}'
sample.config
param_server.type=redis
param_server.host=localhost

実行

digdag run task.dig -c ./sample.config --session "2018-12-09 21:00:00"
# hoge fuga

1位 Retry Interval

v0.9.28で導入されました。
インターバルの種類がconstantexponentialから選ぶことが出来ます。
これまでリトライ回数の指定は可能でしたがインターバルが指定できませんでした。この機能の追加によってリトライ時の実行時間の間隔を指定できるようになりました。
おそらくリトライの設定はだいたいどのワークフローでも同じようなものなので、以下のように別ファイルに記述して、includeするのがスッキリ書けて良いのではないかと思っています。

retry.dig
_retry:
  limit: 3 # number of retry
  interval: 1800 # interval seconds
  interval_type: exponential
task.dig
_export:
  !include: 'retry.dig'

+task:
  echo>: hoge

最後に

リトライのインターバルは本当に便利なので、最近バージョンあげてないな、と思ったらすぐに最新にアップデートすることをおすすめします。
この他にも様々な機能追加など活発に開発が行われていて今後の動向からも目がはなせません。

ちなみに最近PRを送ってみました。
もしマージされたらsession viewがstatusごとに閲覧可能になります。
こんな感じです↓

簡単でしたが以上です!ありがとうございました!