aws-flow-ruby でheartbeartを使ってタスクの進捗率を把握したり死活監視できるようにしておく
実⾏行行時間の長いアクティビティのサポート
・定期的なハートビートの実⾏
というわけでその方法を調べたのでメモ。
default_task_heartbeat_timeout
Activityクラスでハートビートのタイムアウトを設定する。ハートビートの間隔がこれより長くなると、「Activity死んでね?」ってわかるわけですね。
activity :looooong_activity do { # 省略 default_task_heartbeat_timeout: 30, } end
record_activity_heartbeat
Activityからハートビートを送るには、extend AWS::Flow::Activities
でインスタンスメソッドに追加されるrecord_activity_heartbeat
を使うようです。
def looooong_activity(job) # 進捗に合わせて 全体のタスク数, 現在のタスク番号 を引数にブロックを呼び出すメソッドのつもり job.execute(job) do |total, current| record_activity_heartbeat format('%f', current.quo(total)) # 0.01 => 1% end true end
record_activity_heartbeat
の引数は進捗を示す文字列ということです。