Add HTTP health check server for Knative
Validate and publish container image / build (push) Successful in 3m58s

This commit is contained in:
Agents AI
2026-07-18 00:25:30 +00:00
parent 29904df87b
commit 62dc0a0cd5
3 changed files with 81 additions and 7 deletions
+26 -6
View File
@@ -14,8 +14,8 @@ import logging
import requests
from datetime import datetime, timezone
from typing import Dict, List, Optional
import signal
import threading
from http.server import HTTPServer, BaseHTTPRequestHandler
from dataclasses import dataclass
# ログ設定
@@ -28,6 +28,25 @@ logging.basicConfig(
)
logger = logging.getLogger(__name__)
class HealthCheckHandler(BaseHTTPRequestHandler):
def do_GET(self):
if self.path == '/health':
self.send_response(200)
self.end_headers()
self.wfile.write(b'OK')
else:
self.send_response(404)
self.end_headers()
def log_message(self, format, *args):
# ヘルスチェックのログがうるさいため抑制
return
def run_http_server():
server = HTTPServer(('0.0.0.0', 8080), HealthCheckHandler)
logger.info("Health check server started on port 8080")
server.serve_forever()
@dataclass
class EmailMessage:
"""メールメッセージのデータクラス"""
@@ -445,9 +464,6 @@ class EmailMonitor:
logger.debug(f"{self.check_interval}秒後に次のチェックを実行します")
time.sleep(self.check_interval)
except KeyboardInterrupt:
logger.info("キーボード割り込みを受信しました")
break
except Exception as e:
logger.error(f"監視ループでエラーが発生しました: {str(e)}")
self.disconnect_from_email()
@@ -480,9 +496,13 @@ def main():
signal.signal(signal.SIGINT, lambda s, f: signal_handler(s, f, monitor))
signal.signal(signal.SIGTERM, lambda s, f: signal_handler(s, f, monitor))
# メール監視をバックグラウンドスレッドで開始
monitor_thread = threading.Thread(target=monitor.start_monitoring, daemon=True)
monitor_thread.start()
# メインスレッドでヘルスチェックサーバーを実行
try:
# 監視開始
monitor.start_monitoring()
run_http_server()
except Exception as e:
logger.error(f"アプリケーションエラー: {str(e)}")
sys.exit(1)