Files
2026-07-19 23:04:16 +09:00

57 lines
1.2 KiB
Python

"""PostgreSQL connection pool."""
from __future__ import annotations
import logging
from psycopg_pool import AsyncConnectionPool
from config import DATABASE_URL
logger = logging.getLogger("mail_summary")
_pool: AsyncConnectionPool | None = None
_pool_enabled = False
async def init_pool() -> None:
global _pool, _pool_enabled
if _pool is not None:
return
try:
pool = AsyncConnectionPool(
conninfo=DATABASE_URL,
min_size=1,
max_size=10,
open=False,
)
await pool.open()
_pool = pool
_pool_enabled = True
logger.info("PostgreSQL connection pool initialized")
except Exception:
_pool = None
_pool_enabled = False
logger.exception("PostgreSQL unavailable")
async def close_pool() -> None:
global _pool, _pool_enabled
if _pool is None:
return
await _pool.close()
_pool = None
_pool_enabled = False
logger.info("PostgreSQL connection pool closed")
def pool_enabled() -> bool:
return _pool_enabled and _pool is not None
def get_pool() -> AsyncConnectionPool:
if _pool is None:
raise RuntimeError("Database pool is not initialized")
return _pool