fix(oracle): corrigir persistência e carregamento do ranking
- Corrigir conexão Oracle com teste antes do pool - Carregar ranking em batches de 10k (limite de 10k por query) - Aumentar timeout de carregamento para 5 minutos - Adicionar depends_on para Oracle no docker-compose - Padronizar nome do container Oracle para oracle18c
This commit is contained in:
@@ -32,12 +32,20 @@ async def carregar_ranking_do_oracle() -> int:
|
||||
if total == 0:
|
||||
return []
|
||||
|
||||
consultores = ranking_oracle_repo.buscar_paginado(page=1, size=total)
|
||||
consultores = []
|
||||
batch_size = 10000
|
||||
total_pages = (total + batch_size - 1) // batch_size
|
||||
logger.info(f"Carregando {total} consultores do Oracle em {total_pages} batches...")
|
||||
|
||||
for page in range(1, total_pages + 1):
|
||||
batch = ranking_oracle_repo.buscar_paginado(page=page, size=batch_size)
|
||||
consultores.extend(batch)
|
||||
|
||||
return consultores
|
||||
|
||||
consultores = await asyncio.wait_for(
|
||||
asyncio.get_event_loop().run_in_executor(None, _sync_load),
|
||||
timeout=30.0
|
||||
timeout=300.0
|
||||
)
|
||||
|
||||
if not consultores:
|
||||
@@ -83,16 +91,8 @@ async def lifespan(app: FastAPI):
|
||||
|
||||
try:
|
||||
if oracle_client:
|
||||
def _connect_oracle():
|
||||
oracle_client.connect()
|
||||
return oracle_client.is_connected
|
||||
|
||||
connected = await asyncio.wait_for(
|
||||
asyncio.get_event_loop().run_in_executor(None, _connect_oracle),
|
||||
timeout=10.0
|
||||
)
|
||||
|
||||
if connected:
|
||||
oracle_client.connect()
|
||||
if oracle_client.is_connected:
|
||||
logger.info("Conectado ao Oracle")
|
||||
total = await carregar_ranking_do_oracle()
|
||||
if total > 0:
|
||||
@@ -100,9 +100,7 @@ async def lifespan(app: FastAPI):
|
||||
else:
|
||||
logger.info("Ranking vazio no Oracle - aguardando processamento")
|
||||
else:
|
||||
logger.warning("Não foi possível conectar ao Oracle - ranking será carregado do ES")
|
||||
except asyncio.TimeoutError:
|
||||
logger.warning("Timeout ao conectar ao Oracle - ranking será carregado do ES")
|
||||
logger.warning("Não foi possível conectar ao Oracle")
|
||||
except Exception as e:
|
||||
logger.warning(f"Erro ao inicializar Oracle: {e}")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user