import os from dotenv import load_dotenv import oracledb load_dotenv() # Inicializar el cliente Oracle (Solo una vez al iniciar la app) oracledb.init_oracle_client(lib_dir=os.getenv("ORA_DIRECTORY")) # Variable global para almacenar el pool db_pool = None def init_pool(): """ Esta función debe llamarse una sola vez al arrancar el servidor (ej. en el main) """ global db_pool try: user = os.getenv("DB_USER") password = os.getenv("DB_PASSWORD") host = os.getenv("DB_HOST") port = os.getenv("DB_PORT", "1521") sid = os.getenv("DB_SID") dsn = oracledb.makedsn(host, port, sid=sid) # Creamos el pool db_pool = oracledb.create_pool( user=user, password=password, dsn=dsn, min=2, # Conexiones mínimas siempre abiertas max=10, # Máximo de conexiones simultáneas permitidas increment=1 ) print("Pool de conexiones creado exitosamente") except oracledb.DatabaseError as e: print(f"Error al crear el pool: {e}") raise def get_connection(): """ Obtiene una conexión del pool. IMPORTANTE: El que llama a esta función DEBE devolver la conexión al pool. """ try: return db_pool.acquire() except oracledb.DatabaseError as e: print(f"Error al adquirir conexión del pool: {e}") raise