Escolha onde a tarefa vai rodar
- Dentro da sua aplicação atual: é o mais simples, se a tarefa for leve e compartilhar código com ela.
- Em uma aplicação de segundo plano separada: é melhor se a tarefa for pesada ou se você não quiser que ela disputa memória com as requisições. Ela reinicia e escala sozinha.
Node.js
index.js
Python
main.py
BlockingScheduler mantém o processo vivo. Com um script que termina depois de agendar, o processo
sai com código 0 e não é reiniciado.
Pontos que você precisa acertar
Sempre defina o fuso horário
Sempre defina o fuso horário
Não dependa do fuso do relógio do container: passe o fuso horário explicitamente para o agendador, como nos exemplos.
Faça as tarefas serem seguras para rodar duas vezes
Faça as tarefas serem seguras para rodar duas vezes
Um reinício durante uma tarefa significa que ela pode rodar de novo. Registre o que já foi processado, ou projete a
tarefa de forma que uma segunda execução não mude nada.
Capture os erros dentro da tarefa
Capture os erros dentro da tarefa
Um erro não tratado pode derrubar o processo inteiro, e 5 quedas em 10 minutos pausam o
reinício automático por 24 horas. Envolva o corpo da tarefa em
try/catch e registre a falha em log.Registre cada execução
Registre cada execução
Imprima uma linha quando a tarefa começar e outra quando terminar; a aba Logs é onde você vai conferir se ela rodou.
Em Python, use
flush=True para que a linha apareça imediatamente.