digdag 実行すると
- 2度目は処理が実行されずスキップされている。
- セッションの情報は.digdagディレクトリ下に日付がついて保存されている。
- ここにtask1,task2,task3の実行が成功したという状態が保存されているため、2度目の実行はスキップされる。
- .digdagに保存される
/work # ls -l .digdag/status/20200121T183000\+0900/
total 32
-rw-r--r-- 1 root root 183 Jan 21 09:47 +mydag+disp_current_date.yml
-rw-r--r-- 1 root root 171 Jan 21 09:47 +mydag+setup.yml
-rw-r--r-- 1 root root 172 Jan 21 10:30 +mydag+setup1.yml
-rw-r--r-- 1 root root 171 Jan 21 10:32 +mydag+step1.yml
-rw-r--r-- 1 root root 171 Jan 21 10:32 +mydag+step2.yml
-rw-r--r-- 1 root root 171 Jan 21 10:32 +mydag+step3.yml
-rw-r--r-- 1 root root 165 Jan 21 10:32 +mydag.yml
-rw-r--r-- 1 root root 179 Jan 21 09:51 +mydag^failure-alert.yml
このまま何度もやるとスキップされる
-- sessionオプション
- この--sessionのデフォルト値はlast(最後に実行されたセッションを適用)になるため、2回め以降の実行は永久にスキップされてしまう。
--sessionには引数
- hourly
- daily
- last
- "yyyy-MM-dd"
- "yyyy-MM-dd HHSS"
digdag run xxxxx.dig
digdag run xxxxxxxxx.dig --session hourly
/work # digdag run mydag.dig --session hourly
2020-01-21 10:40:47 +0000: Digdag v0.9.41
2020-01-21 10:40:50 +0000 [INFO] (main): Using session /work/.digdag/status/20200121T190000+0900.
2020-01-21 10:40:50 +0000 [INFO] (main): Starting a new session project id=1 workflow name=mydag session_time=2020-01-21T19:00:00+09:00
2020-01-21 10:40:52 +0000 [INFO] (0017@[0:default]+mydag+step1): echo>: step1
2020-01-21 10:40:52 +0000 [INFO] (0018@[0:default]+mydag+step2): echo>: step2
2020-01-21 10:40:52 +0000 [INFO] (0019@[0:default]+mydag+step3): echo>: step3
step3
step2
step1
Success. Task state is saved at /work/.digdag/status/20200121T190000+0900 directory.
* Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time.
* Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.
- スキップされずにでた
2回目
/work # digdag run mydag.dig --session hourly
2020-01-21 10:40:56 +0000: Digdag v0.9.41
2020-01-21 10:40:59 +0000 [INFO] (main): Using session /work/.digdag/status/20200121T190000+0900.
2020-01-21 10:40:59 +0000 [INFO] (main): Starting a new session project id=1 workflow name=mydag session_time=2020-01-21T19:00:00+09:00
2020-01-21 10:40:59 +0000 [WARN] (0019@[0:default]+mydag+step3): Skipped
2020-01-21 10:40:59 +0000 [WARN] (0018@[0:default]+mydag+step2): Skipped
2020-01-21 10:40:59 +0000 [WARN] (0017@[0:default]+mydag+step1): Skipped
Success. Task state is saved at /work/.digdag/status/20200121T190000+0900 directory.
* Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time.
* Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.
- スキップされた
- このセッションは自分で日付指定する事もできる。
- 例えばmonthlyなセッションを作りたい場合は以下のようにする。
$ digdag run workflow.dig --session "`date '+%Y-%m-01'`"
毎回全てスキップされずに実行する方法
- 毎回最初から実行したい場合は-a(--rerun)を使う。
/work # digdag run mydag.dig -a
2020-01-21 10:52:22 +0000: Digdag v0.9.41
2020-01-21 10:52:24 +0000 [WARN] (main): Reusing the last session time 2020-01-21T19:00:00+09:00.
2020-01-21 10:52:24 +0000 [INFO] (main): Using session /work/.digdag/status/20200121T190000+0900.
2020-01-21 10:52:24 +0000 [INFO] (main): Starting a new session project id=1 workflow name=mydag session_time=2020-01-21T19:00:00+09:00
2020-01-21 10:52:26 +0000 [INFO] (0018@[0:default]+mydag+step2): echo>: step2
2020-01-21 10:52:26 +0000 [INFO] (0019@[0:default]+mydag+step3): echo>: step3
2020-01-21 10:52:26 +0000 [INFO] (0017@[0:default]+mydag+step1): echo>: step1
step2
step3
step1
Success. Task state is saved at /work/.digdag/status/20200121T190000+0900 directory.
* Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time.
* Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.
- digdag run mydag.dig --rerun
- digdag run mydag.dig -a
のどっちか
-sオプション
- taskを途中から実行する際には-sを使う。
- digdag run mydag.dig -s '+{digdag-file-name}+{途中実行させたいステップ}'
/work # digdag run mydag.dig -s '+mydag+step4'
2020-01-21 11:19:05 +0000: Digdag v0.9.41
2020-01-21 11:19:08 +0000 [WARN] (main): Reusing the last session time 2020-01-21T19:00:00+09:00.
2020-01-21 11:19:08 +0000 [INFO] (main): Using session /work/.digdag/status/20200121T190000+0900.
2020-01-21 11:19:08 +0000 [INFO] (main): Starting a new session project id=1 workflow name=mydag session_time=2020-01-21T19:00:00+09:00
2020-01-21 11:19:08 +0000 [WARN] (0017@[0:default]+mydag+setup1): Skipped
2020-01-21 11:19:08 +0000 [WARN] (0017@[0:default]+mydag+step2): Skipped
2020-01-21 11:19:08 +0000 [WARN] (0017@[0:default]+mydag+step3): Skipped
2020-01-21 11:19:10 +0000 [INFO] (0017@[0:default]+mydag+step4): sh>: ./repeat_hello.sh
from process 2036
from process 2036
from process 2036
from process 2036
Success. Task state is saved at /work/.digdag/status/20200121T190000+0900 directory.
* Use --session <daily | hourly | "yyyy-MM-dd[ HH:mm:ss]"> to not reuse the last session time.
* Use --rerun, --start +NAME, or --goal +NAME argument to rerun skipped tasks.