Cron Jobs
Agende tarefas recorrentes que rodam dentro dos seus contêineres. De limpezas de banco de dados a geração de relatórios, cron jobs automatizam operações repetitivas em um agendamento definido.
Criando um Cron Job
Cron jobs são criados no nível do serviço. Cada job executa um comando dentro do contêiner em execução do serviço.
- Navegue até seu serviço dentro da sua stack.
- Clique na aba Cron Jobs.
- Clique em Adicionar Cron Job.
- Insira um nome descritivo (ex.: "Limpeza diária do banco de dados").
- Insira a expressão cron para o agendamento.
- Insira o comando a ser executado (ex.:
python manage.py cleanup). - Clique em Criar.
Sintaxe de Expressão Cron
O sh0 usa expressões cron padrão de 5 campos. Cada campo representa uma unidade de tempo:
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sunday = 0)
│ │ │ │ │
* * * * *| Símbolo | Significado | Exemplo |
|---|---|---|
| * | Todo valor | * * * * * = a cada minuto |
| , | Lista de valores | 0 8,12,18 * * * = 8h, 12h, 18h |
| - | Intervalo | 0 9-17 * * * = a cada hora das 9h às 17h |
| / | Passo | */15 * * * * = a cada 15 minutos |
Padrões Comuns
# Every minute
* * * * *
# Every 5 minutes
*/5 * * * *
# Every hour at minute 0
0 * * * *
# Every day at midnight
0 0 * * *
# Every day at 3:30 AM
30 3 * * *
# Every Monday at 9:00 AM
0 9 * * 1
# First day of every month at midnight
0 0 1 * *
# Every weekday (Mon-Fri) at 6:00 AM
0 6 * * 1-5Selecionando o Contêiner Alvo
Quando um serviço tem múltiplas réplicas, você precisa decidir qual contêiner executa o cron job. O sh0 oferece dois modos de execução:
- Instância única (padrão) -- O job roda em apenas um contêiner, evitando execução duplicada. Esta é a escolha certa para migrações de banco de dados, geração de relatórios ou qualquer tarefa que não deve rodar simultaneamente.
- Todas as instâncias -- O job roda em cada réplica. Use para aquecimento de cache, limpeza de arquivos locais ou tarefas que precisam rodar em cada instância.
Histórico de Execução e Logs
Cada execução de cron job é registrada com seu horário de início, horário de término, código de saída e saída. Visualize o histórico de execução na página de detalhes do cron job.
Clique em qualquer execução para ver a saída completa de stdout e stderr. Isso é inestimável para depurar jobs com falha ou verificar se uma tarefa foi concluída corretamente.
Habilitando e Desabilitando Jobs
Você pode desabilitar temporariamente um cron job sem excluí-lo. Isso é útil durante janelas de manutenção ou ao depurar um problema causado por uma tarefa agendada.
- Ative o botão Habilitado no cartão do cron job para desabilitar ou reabilitar.
- Jobs desabilitados mantêm sua configuração e histórico -- nada é perdido.
- Você também pode acionar uma execução manual clicando em Executar Agora, independentemente do agendamento.
Tratamento de Erros e Retentativas
Quando um cron job sai com um código de status diferente de zero, o sh0 marca a execução como falha. Você pode configurar retentativas automáticas e notificações de falha:
- Retentativas -- Defina o número de tentativas de retentativa (0-5) e o intervalo entre retentativas.
- Timeout -- Defina um tempo máximo de execução. Jobs que excedem esse limite são encerrados.
- Alertas de falha -- Configure alertas para ser notificado quando um job falhar. Funciona com os mesmos canais de notificação dos alertas de métricas.