Python | 応用例:「レポート生成から PDF化・メール送信・クラウド共有までを一括自動化するパイプライン」

Python
スポンサーリンク

応用例:「スケジューリングしたパイプラインのログ管理とエラーハンドリング」

定期的に自動実行されるパイプラインは、ログ管理エラーハンドリングを組み込むことで安定運用できます。これにより「いつ実行されたか」「成功したか」「失敗したか」を記録し、トラブル時に原因をすぐに特定できます。


サンプルコード(ログ+エラーハンドリング付き)

import schedule
import time
import logging

# --- ログ設定 ---
logging.basicConfig(
    filename="pipeline.log",
    level=logging.INFO,
    format="%(asctime)s [%(levelname)s] %(message)s"
)

def pipeline():
    try:
        logging.info("パイプライン開始")

        # Step 1: レポート生成
        logging.info("レポート生成中...")
        # generate_report()

        # Step 2: PDF化
        logging.info("PDF変換中...")
        # convert_to_pdf()

        # Step 3: メール送信
        logging.info("メール送信中...")
        # send_email()

        # Step 4: クラウド共有
        logging.info("クラウド共有中...")
        # upload_to_drive()

        logging.info("パイプライン完了")

    except Exception as e:
        logging.error(f"エラー発生: {e}", exc_info=True)

# 毎日9時に実行
schedule.every().day.at("09:00").do(pipeline)

while True:
    schedule.run_pending()
    time.sleep(60)
Python

ログファイル出力例(pipeline.log)

2025-12-02 09:00:00 [INFO] パイプライン開始
2025-12-02 09:00:00 [INFO] レポート生成中...
2025-12-02 09:00:01 [INFO] PDF変換中...
2025-12-02 09:00:02 [INFO] メール送信中...
2025-12-02 09:00:03 [INFO] クラウド共有中...
2025-12-02 09:00:05 [INFO] パイプライン完了

エラーが発生した場合は [ERROR] として記録され、exc_info=True によりスタックトレースもログに残ります。


解説ポイント

  • logging モジュール → 標準ライブラリでログ管理が可能。
  • ログレベルINFO は通常処理、ERROR は失敗時。
  • exc_info=True → エラーの詳細(スタックトレース)を記録。
  • スケジューリングと組み合わせ → 定期実行の成否をログで確認できる。

応用の場面

  • 定期レポート配布 → 成功・失敗をログで確認。
  • 障害対応 → エラー発生時にログから原因を特定。
  • 監査・記録 → 実行履歴を残して業務管理に活用。

まとめ

  • ログ管理を組み込むことで 実行履歴とエラー原因を記録できる。
  • エラーハンドリングを加えることで 失敗時も安全に処理が終了する。
  • 定期実行パイプラインの安定運用には必須の仕組み。
Python
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました