はじめに
Digdagで定期実行するプロジェクトを作ってみました。
(表記ゆれというか用語間違いがあるかもしれませんのでお気づきの際はご指摘ください)
疑問
誰か教えてください。
- セッションとアテンプトの違い?
- 1回のセッションで実行されたそれぞれのタスクの実行結果は確認できるのか?
- 現在はスケジューラを停止すると結果が消えてしまうが、結果を永続化するにはどうすれば良いか?(PostgreSQLを使う?H2でも永続化可能)
- スケジューラはスケジューラだけさせて別プロセス(別ホスト)でタスクを実行するには?
プロジェクトの作成
foo.digを作成します。1分毎に現在時刻を表示します。その後"Hello"と出力します。
timezone: "Asia/Tokyo"
schedule:
minutes_interval>: 1
+current_date:
sh>: echo `date`
+echo_hello:
sh>: echo "hello"
スケジューラの起動
foo.digのあるディレクトリで、digdag scheduler --project .
digdag scheduler
を実行します。(0.8.2から--project未指定の場合、カレントディレクトリを参照するようになりました)
実行結果
digdag scheduler
2016-06-18 11:09:36 +0900: Digdag v0.8.2
2016-06-18 11:09:38 +0900 [INFO] (main): Added new revision 1
2016-06-18 11:09:38 +0900 [INFO] (main): Starting server on 127.0.0.1:65432
2016-06-18 11:09:38 +0900 [INFO] (main): XNIO version 3.3.3.Final
2016-06-18 11:09:38 +0900 [INFO] (main): XNIO NIO Implementation Version 3.3.3.Final
2016-06-18 11:10:00 +0900 [INFO] (scheduler-0): Starting a new session project id=1 workflow name=foo session_time=2016-06-18T11:10:00+09:00
2016-06-18 11:10:00 +0900 [INFO] (0027@+foo+current_date): sh>: echo `date`
2016年 6月18日 土曜日 11時10分00秒 JST
2016-06-18 11:10:00 +0900 [INFO] (0027@+foo+echo_hello): sh>: echo "hello"
hello
2016-06-18 11:11:00 +0900 [INFO] (scheduler-0): Starting a new session project id=1 workflow name=foo session_time=2016-06-18T11:11:00+09:00
2016-06-18 11:11:00 +0900 [INFO] (0027@+foo+current_date): sh>: echo `date`
2016年 6月18日 土曜日 11時11分00秒 JST
2016-06-18 11:11:00 +0900 [INFO] (0027@+foo+echo_hello): sh>: echo "hello"
hello
2016-06-18 11:12:00 +0900 [INFO] (scheduler-0): Starting a new session project id=1 workflow name=foo session_time=2016-06-18T11:12:00+09:00
2016-06-18 11:12:00 +0900 [INFO] (0027@+foo+current_date): sh>: echo `date`
2016年 6月18日 土曜日 11時12分00秒 JST
2016-06-18 11:12:00 +0900 [INFO] (0027@+foo+echo_hello): sh>: echo "hello"
hello
タスクの確認
digdag task 1
2016-06-18 11:19:59 +0900: Digdag v0.8.1
id: 1
name: +foo
state: success
config: {"schedule":{"minutes_interval>":1}}
parent: null
upstreams: []
export params: {}
store params: {}
state params: {}
id: 2
name: +foo+current_date
state: success
config: {"sh>":"echo `date`"}
parent: 1
upstreams: []
export params: {}
store params: {}
state params: {}
id: 3
name: +foo+echo_hello
state: success
config: {"sh>":"echo \"hello\""}
parent: 1
upstreams: [2]
export params: {}
store params: {}
state params: {}
3 entries.
結果の確認(sessions)
digdag sessions
で確認できるようです。
2016-06-18 11:14:34 +0900: Digdag v0.8.1
Sessions:
session id: 1
attempt id: 1
uuid: 6ca0ad52-0315-40be-b8d6-fc866c23be0e
project: default
workflow: foo
session time: 2016-06-18 11:10:00 +0900
retry attempt name:
params: {"last_session_time":"2016-06-18T11:09:00+09:00","next_session_time":"2016-06-18T11:11:00+09:00"}
created at: 2016-06-18 11:10:00 +0900
kill requested: false
status: success
session id: 2
attempt id: 2
uuid: a836e331-ba44-4d5c-8149-1dbefc34ec03
project: default
workflow: foo
session time: 2016-06-18 11:11:00 +0900
retry attempt name:
params: {"last_session_time":"2016-06-18T11:10:00+09:00","next_session_time":"2016-06-18T11:12:00+09:00"}
created at: 2016-06-18 11:11:00 +0900
kill requested: false
status: success
単一セッションを確認
digdag sessions <sessions-id>
で確認できるようです。
digdag sessions 1
2016-06-18 11:15:23 +0900: Digdag v0.8.1
session id: 1
attempt id: 1
uuid: 6ca0ad52-0315-40be-b8d6-fc866c23be0e
project: default
workflow: foo
session time: 2016-06-18 11:10:00 +0900
retry attempt name:
params: {"last_session_time":"2016-06-18T11:09:00+09:00","next_session_time":"2016-06-18T11:11:00+09:00"}
created at: 2016-06-18 11:10:00 +0900
kill requested: false
status: success
attemptsの確認
sessionとの違いがよくわかりませんがattemptsというコマンドもあるようです。
出力はsessionに似ています。
digdag attempts
2016-06-18 11:16:34 +0900: Digdag v0.8.1
Session attempts:
session id: 1
attempt id: 1
uuid: 6ca0ad52-0315-40be-b8d6-fc866c23be0e
project: default
workflow: foo
session time: 2016-06-18 11:10:00 +0900
retry attempt name:
params: {"last_session_time":"2016-06-18T11:09:00+09:00","next_session_time":"2016-06-18T11:11:00+09:00"}
created at: 2016-06-18 11:10:00 +0900
kill requested: false
status: success
session id: 2
attempt id: 2
uuid: a836e331-ba44-4d5c-8149-1dbefc34ec03
project: default
workflow: foo
session time: 2016-06-18 11:11:00 +0900
retry attempt name:
params: {"last_session_time":"2016-06-18T11:10:00+09:00","next_session_time":"2016-06-18T11:12:00+09:00"}
created at: 2016-06-18 11:11:00 +0900
kill requested: false
status: success
単一のattemptsの確認
digdag attempts でいけるようです。
digdag attempts 1
2016-06-18 11:18:05 +0900: Digdag v0.8.1
Session attempts:
session id: 1
attempt id: 1
uuid: 6ca0ad52-0315-40be-b8d6-fc866c23be0e
project: default
workflow: foo
session time: 2016-06-18 11:10:00 +0900
retry attempt name:
params: {"last_session_time":"2016-06-18T11:09:00+09:00","next_session_time":"2016-06-18T11:11:00+09:00"}
created at: 2016-06-18 11:10:00 +0900
kill requested: false
status: success
単一のattemptの確認
出力がほとんど同じに見えますが、digdag attempt <attempt-id>
でattempt?の結果が見られるようです。
digdag attempt 1
2016-06-18 11:18:53 +0900: Digdag v0.8.1
session id: 1
attempt id: 1
uuid: 6ca0ad52-0315-40be-b8d6-fc866c23be0e
project: default
workflow: foo
session time: 2016-06-18 11:10:00 +0900
retry attempt name:
params: {"last_session_time":"2016-06-18T11:09:00+09:00","next_session_time":"2016-06-18T11:11:00+09:00"}
created at: 2016-06-18 11:10:00 +0900
kill requested: false
status: success
お礼
こちらを参考にさせていただきました。
ありがとうございます。
@hiroysato デフォルトはメモリ上にDB作るモードっぽいです。その後なぜか--project .で回避できました。
— DATE Ken (@nuna) 2016年6月17日