- Remove dependência apscheduler - Implementa loop asyncio com sleep calculado - Compatível com ambientes sem cron (OCP/Kubernetes) - Documenta solução em SCHEDULER.md
1.5 KiB
1.5 KiB
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
asyncioedatetime - Portável - Funciona em qualquer ambiente Docker/Kubernetes/OCP
- Sem dependências - Removemos
apschedulerdo requirements.txt - Simples - Loop infinito com sleep calculado até próximo horário
Funcionamento
# 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:
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:
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.