felicity-lims/felicity/lims/checks/db.py

32 lines
881 B
Python
Raw Normal View History

2021-01-06 19:52:14 +08:00
import logging
2024-09-28 15:29:22 +08:00
from sqlalchemy import text
2024-09-22 23:15:27 +08:00
from tenacity import after_log, before_log, retry, stop_after_attempt, wait_fixed
2023-03-19 23:21:32 +08:00
2024-09-25 00:12:10 +08:00
from felicity.database.session import async_session
2023-09-11 14:20:47 +08:00
2021-01-06 19:52:14 +08:00
logging.basicConfig(level=logging.INFO)
logger = logging.getLogger(__name__)
max_tries = 60 * 5 # 5 minutes
wait_seconds = 1
@retry(
stop=stop_after_attempt(max_tries),
wait=wait_fixed(wait_seconds),
before=before_log(logger, logging.INFO),
after=after_log(logger, logging.WARN),
)
async def check_db_conn_status() -> None:
2023-09-11 14:20:47 +08:00
logger.info("Checking database status ...")
2021-01-06 19:52:14 +08:00
try:
2024-09-25 00:12:10 +08:00
session = async_session()
2021-01-06 19:52:14 +08:00
# Try to create session to check if DB is awake
2024-09-28 15:29:22 +08:00
await session.execute(text("SELECT 1"))
await session.close()
2023-09-11 14:20:47 +08:00
logger.info("database session connection established. ")
2021-01-06 19:52:14 +08:00
except Exception as e:
logger.error(e)
raise e