diff --git a/api/app.py b/api/app.py index 051bce1..6a5795d 100644 --- a/api/app.py +++ b/api/app.py @@ -4,7 +4,6 @@ from flask_jwt_extended import JWTManager from jwt import ExpiredSignatureError from models import db, RevokedToken import os -from tech_views import tech_bp from utils import init_db, wait_for_db from views import user_bp from werkzeug.exceptions import HTTPException diff --git a/api/utils.py b/api/utils.py index 2f5d69d..76986b0 100644 --- a/api/utils.py +++ b/api/utils.py @@ -3,7 +3,7 @@ from flask_jwt_extended import get_jwt_identity from models import User, db import os from sqlalchemy import text -from sqlalchemy.exc import DatabaseError, InterfaceError +from sqlalchemy.exc import DatabaseError import time from werkzeug.security import generate_password_hash @@ -32,18 +32,20 @@ def get_user_or_404(user_id): return user -def wait_for_db(max_retries): - "Try to connect with database times." - global db_ready - for _ in range(max_retries): +MAX_RETRIES = 100 + +def wait_for_db(): + for retries in range(MAX_RETRIES): try: with db.engine.connect() as connection: connection.execute(text("SELECT 1")) - db_ready = True + print("Successfully connected with database.") return - except DatabaseError | InterfaceError: + except DatabaseError: + print(f"Waiting for database... (retry {retries + 1})") time.sleep(3) - raise Exception("Failed to connect to database.") + print("Failed to connect to database.") + raise Exception("Database not ready after multiple retries.") def init_db():