fix(worker): 初始化 PostgreSQL 連線池 - 修復 Incident DB 持久化
問題: - Signal Worker 沒有初始化 PostgreSQL,導致 incidents 表可能不存在 - Incident 只寫入 Redis,未持久化到 PostgreSQL - 審核後無法正確更新 DB 狀態 修復: - 在 Signal Worker 啟動時呼叫 init_db() 建立表 - 在關閉時呼叫 close_db() 釋放連線池 - 增加 PostgreSQL 初始化日誌 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user