# Scheduler de Ranking - Solução para OCP ## Problema Em ambientes OpenShift Container Platform (OCP), não é possível usar cron dentro dos PODs. ## Solução Implementada Loop asyncio nativo Python sem dependências externas. ### Características - **100% Python nativo** - Usa apenas `asyncio` e `datetime` - **Portável** - Funciona em qualquer ambiente Docker/Kubernetes/OCP - **Sem dependências** - Removemos `apscheduler` do requirements.txt - **Simples** - Loop infinito com sleep calculado até próximo horário ### Funcionamento ```python # Calcula tempo até próxima execução (ex: 3h da manhã) proxima_execucao = datetime.now().replace(hour=3, minute=0, second=0) if agora >= proxima_execucao: proxima_execucao += timedelta(days=1) # Aguarda assincronamente await asyncio.sleep(segundos_ate_proxima) # Executa job await job.executar(limpar_antes=True) ``` ### Configuração Padrão: **3h da manhã** (horário do servidor) Para alterar: edite `backend/src/interface/api/app.py` linha 23: ```python await scheduler.iniciar(hora_alvo=3) # Altere para outra hora ``` ### Logs ``` Próxima execução do ranking: 11/12/2025 03:00:00 Scheduler do ranking iniciado: job rodará diariamente às 3h ``` ### Execução Manual Se precisar rodar fora do schedule: ```bash curl -X POST "http://localhost:8000/api/v1/ranking/processar?limpar=true" ``` ### Migração para OCP Nenhuma configuração adicional necessária. O container já está pronto.