diff --git a/apps/api/src/workers/signal_worker.py b/apps/api/src/workers/signal_worker.py index 22d6156b..f2d04b6b 100644 --- a/apps/api/src/workers/signal_worker.py +++ b/apps/api/src/workers/signal_worker.py @@ -326,17 +326,30 @@ async def _main() -> None: # Initialize settings first (loads env vars) from src.core.config import settings # noqa: F401 from src.core.redis_client import init_redis_pool, close_redis_pool, init_worker_redis_pool, close_worker_redis_pool + from src.db.base import init_db, close_db logger.info( "signal_worker_standalone_starting", environment=settings.ENVIRONMENT, redis_url=settings.REDIS_URL.split("@")[-1] if settings.REDIS_URL else "N/A", + database_url=settings.DATABASE_URL.split("@")[-1] if settings.DATABASE_URL else "N/A", ) # Initialize Redis (API pool + Worker 專屬長連線池) await init_redis_pool() await init_worker_redis_pool() # Worker 專屬,無超時限制 + # Initialize PostgreSQL (Episodic Memory) - 確保 incidents 表存在 + try: + await init_db() + logger.info("postgresql_initialized", status="ok") + except Exception as e: + logger.error( + "postgresql_init_failed", + error=str(e), + message="Episodic Memory (DB) will be unavailable - incidents won't persist", + ) + # Write health files for K8s probes await _write_health_files() @@ -361,6 +374,7 @@ async def _main() -> None: await worker.stop() await close_worker_redis_pool() # 關閉 Worker 專屬連線 await close_redis_pool() + await close_db() # 關閉 PostgreSQL 連線池 # Remove health files from pathlib import Path