コンテンツにスキップ
Dev Classmethod Jp Articles Google Chat Bot Httplib2 Thread Safety

httplib2 のスレッドセーフティ問題を修正した話 — google-api-python-client の罠

  • URL: https://dev.classmethod.jp/articles/google-chat-bot-httplib2-thread-safety
  • 日付: 2026-06-20
  • Tier: Tier 2
  • 要旨: Google Chat BotをCloud Runで動かす際にhttplib2のスレッドセーフ問題が原因で断続的にエラーが発生した事例と修正方法を紹介。共有インスタンスを排除してリクエストごとに生成する変更で解消した。

詳細

httplib2.Httpはスレッドセーフではないため、グローバルまたはクラス変数として保持してマルチスレッド環境(Gunicornなど)で再利用すると競合が発生する。修正方法はリクエストハンドラの内部でhttplib2.Http()を毎回インスタンス化すること。google-auth-httplib2のAuthorizedHttpも同様にリクエストスコープで生成する必要がある。Cloud RunはデフォルトでGuvicornを使いマルチスレッドで動作するため、この問題が顕在化しやすい。