Cloud Run Jobsの実行履歴を失敗にして終了したい

に公開

やりたいこと

  • Cloud Run Jobsでバッチを実行させるとき、なんらかの原因で例外が発生した場合に実行履歴を失敗としてバッチを終了させたい。

ちょっと困ったこと

上記だけでは「ん?」となっている方もいるかもしれないので少し補足します。

Cloud Run Jobsでジョブを実行したとき、そのジョブが成功したのか、失敗したのかを[実行履歴]タブから確認することができます。

今回はpythonでジョブを作成していたのですが、例外を捕捉しても実行履歴としては正常(✅マーク)で終了し、実行履歴からはジョブの失敗を判断できないということがありました。

少し調べたところ、公式のサンプルコードに解決方法が書いてありました。

sys.exit(1)でジョブを終了する

ジョブの実行履歴を失敗にさせたい場合、sys.exit(1)で終了させる方法があるようです。

https://cloud.google.com/run/docs/quickstarts/jobs/build-create-python?hl=ja

import sys

・・・

# Start script
if __name__ == "__main__":
    try:
        main(SLEEP_MS, FAIL_RATE)
    except Exception as err:
        message = (
            f"Task #{TASK_INDEX}, " + f"Attempt #{TASK_ATTEMPT} failed: {str(err)}"
        )

        print(json.dumps({"message": message, "severity": "ERROR"}))
        sys.exit(1)  # Retry Job Task by exiting the process

ジョブのリトライ回数を設定している場合、sys.exit(1)によりジョブの再試行が行われます。また、リトライ回数を0としている場合、ジョブの実行履歴が失敗(❗️マーク)で終了することがわかりました。

失敗したジョブが一目瞭然でわかること、失敗時の通知のためにアラートを作成する場合にも簡単に条件を作成できることがメリットかなと思います。

以上です。

Discussion