import time from flask import Flask, render_template from flask_sqlalchemy import SQLAlchemy from sqlalchemy.exc import OperationalError db = SQLAlchemy() def create_app(): app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://jfgiraud:lyon4@db/bolsa' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False app.config['SECRET_KEY'] = 'votre_cle_secrete_tres_securisee_jfgiraud04051963++fin' db.init_app(app) # Tentative de connexion et création des tables au démarrage du conteneur with app.app_context(): max_retries = 15 delay = 2 for i in range(max_retries): try: db.create_all() print("Base de données connectée et tables initialisées avec succès.") break except OperationalError as e: print(f"Tentative {i+1}/{max_retries} : MySQL n'est pas encore prêt. Nouvelle tentative dans {delay}s...") time.sleep(delay) else: raise Exception("Impossible d'initialiser la base de données après plusieurs tentatives.") # Enregistrement des routes (Blueprint) from app.routes import main app.register_blueprint(main) return app # Expose 'app' pour que run.py puisse l'importer directement app = create_app()