Files

38 lines
1.3 KiB
Python

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()