digdagでエラーになった処理を、その時間で再実行するには
今の時間を取得して実行する処理を、digdagで毎日回していますが、時々エラーになって落ちる時があります。
その再実行の時にshell側でdateや、python側でdatetime.nowを使っていたため、うまく再実行できませんでした。
そして意外とはまってしまったのでメモ。
結論
環境変数の${settion_time}を引数に渡してやるよい
digファイルの例
test.dig
timezone: Asia/Tokyo
+now_in_digdag:
echo>: start ${session_time}
+now_in_shell:
sh>: date
実行結果
1回目の実行
2019-03-16 22:03:38 +0900 [INFO] (XNIO-1 task-15): Starting a new session project id=1 workflow name=test session_time=2019-03-16T22:03:38+09:00
2019-03-16 22:03:38 +0900 [INFO] (0081@[0:time_test]+test+now_in_digdag): echo>: start 2019-03-16T22:03:38+09:00
start 2019-03-16T22:03:38+09:00
2019-03-16 22:03:38 +0900 [INFO] (0081@[0:time_test]+test+now_in_shell): sh>: date
2019年 3月16日 土曜日 22時03分38秒 JST
同じセッションで2日目の実行
2019-03-16 22:03:49 +0900 [INFO] (XNIO-1 task-8): Starting a new session project id=1 workflow name=test session_time=2019-03-16T22:03:38+09:00
2019-03-16 22:03:49 +0900 [INFO] (0081@[0:time_test]+test+now_in_digdag): echo>: start 2019-03-16T22:03:38+09:00
start 2019-03-16T22:03:38+09:00 ←!!セッションIDは、そのセッションが最初に実行された時間のまま!!
2019-03-16 22:03:49 +0900 [INFO] (0081@[0:time_test]+test+now_in_shell): sh>: date
2019年 3月16日 土曜日 22時03分49秒 JST