É possível executar fluxos de trabalho de curta duração como tarefas. O artigo Como executar tarefas explica como executar as tarefas em apps.
Também é possível programar a execução recorrente de tarefas com o formato unix-cron. Com as tarefas programadas, você envia primeiro um app que executa a tarefa, como você faz com uma tarefa não programada. Depois cria um job para programar a tarefa.
É possível programar a execução da tarefa várias vezes ao dia ou em determinados dias ou meses.
Enviar um app para executar tarefas programadas
Clone o repositório test-app:
git clone https://github.com/cloudfoundry-samples/test-app test-app
cd test-app
Envie o app.
Envie o app com o comando
kf push APP_NAME --task
. A flag--task
indica que o app deve ser usado para executar tarefas. Portanto, o app não terá rotas criadas nem será implantado como um aplicativo de longa execução.kf push test-app --task
Verifique que nenhuma instância ou rota do app foi criada listando o app:
kf apps
O app não foi iniciado e não tem URLs:
Listing Apps in Space: test-space Name Instances Memory Disk CPU URLs test-app stopped 1Gi 1Gi 100m <nil>
Criar um job
Para executar uma tarefa de modo programado, crie primeiro um job que a descreva:
kf create-job test-app test-job "printenv"
O job começa como suspenso ou não programado e não cria tarefas até que seja
executado manualmente por kf run-job
ou programado por kf schedule-task
.
Executar um job manualmente
Assim como as tarefas, é possível executar jobs de modo ad hoc com o comando kf run-task
. Essa opção
é útil para testar o job antes de programar ou executar, conforme necessário, além
da programação.
kf run-job test-job
Esse comando executa imediatamente a tarefa definida pelo job apenas uma vez.
Programar um job
Para programar a execução do job, é preciso usar uma programação unix-cron no comando kf schedule-job
:
kf schedule-job test-job "* * * * *"
Esse comando aciona o job para criar tarefas automaticamente segundo a programação especificada. Neste exemplo, uma tarefa é executada a cada minuto.
Para mudar a programação do job, execute kf schedule-task
com a nova programação.
Os jobs do Kf só podem ter uma única programação cron. Essa é a diferença
do PCF Scheduler, que permite várias programações para um único job.
Se você precisar de mais de uma programação cron, use mais de um job.
Gerenciar jobs e programações
Para conferir todos os jobs do espaço atual, agendados ou não, use o comando kf jobs
:
$ kf jobs
Listing Jobs in Space: test space
Name Schedule Suspend LastSchedule Age Ready Reason
test-job * * * * * <nil> 16s 2m True <nil>
unscheduled-job 0 0 30 2 * true 16s 2m True <nil>
Para conferir apenas os jobs programados, use o comando kf job-schedules
.
$ kf job-schedules
Listing job schedules in Space: test space
Name Schedule Suspend LastSchedule Age Ready Reason
test-job * * * * * <nil> 16s 2m True <nil>
O job unscheduled-job
não aparece no resultado de kf job-schedules
.
Cancelar a programação de um job
Use o comando kf delete-job-schedule
para interromper um job programado:
kf delete-job-schedule test-job
Esse comando suspende o job e impede que ele crie tarefas na programação anterior.
O job não é excluído e pode ser programado novamente por kf schedule-job
para continuar a execução.
Excluir um job
Use o comando kf delete-job
para excluir o job inteiro.
kf delete-job test-job
Esse comando exclui o job e todas as tarefas criadas por ele, tanto as execuções programadas como as manuais. Se ainda houver tarefas em execução, o comando vai excluí-las de modo forçado.
Se quiser impedir a parada das tarefas em execução, primeiro exclua a programação de jobs com o comando kf delete-job-schedule
e aguarde a conclusão das tarefas. Depois use o comando kf delete-job
para excluir o job.