É possível executar fluxos de trabalho de curta duração executando-os como tarefas. O artigo Como executar tarefas explica como executar as tarefas em "Aplicativos".
Também é possível programar tarefas para serem executadas em intervalos recorrentes especificados usando o formato unix-cron. Com as tarefas programadas, você envia primeiro um aplicativo que executa a tarefa como faz com uma tarefa não programada. Depois, cria um job para programar a tarefa.
É possível definir uma programação para que a tarefa seja executada diversas vezes por dia ou em dias e meses determinados.
Enviar um aplicativo para executar tarefas programadas
Clone o repositório do test-app:
git clone https://github.com/cloudfoundry-samples/test-app test-app
cd test-app
Envie o aplicativo.
Envie o aplicativo com o comando
kf push APP_NAME --task
. A sinalização--task
indica que o app deve ser usado para executar tarefas. Portanto, nenhuma rota será criada no app e não será implantada como um aplicativo de longa duração.kf push test-app --task
Verifique se nenhuma instância ou rota do app foi criada listando o aplicativo:
kf apps
Observe que o aplicativo 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 uma vaga
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
Os jobs podem ser executados ad hoc de maneira semelhante à execução de tarefas por kf run-task
. Essa opção
pode ser ú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 o job para execução, forneça uma programação unix-cron no
comando kf schedule-job
.
kf schedule-job test-job "* * * * *"
Esse comando aciona o job para criar tarefas automaticamente na programação especificada. Neste exemplo, uma tarefa é executada a cada minuto.
Para atualizar a programação de um job, execute kf schedule-task
com uma 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ê precisa de várias programações cron, pode usar vários jobs.
Gerenciar jobs e programações
Veja todos os jobs, programados e não programados, no espaço atual usando
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>
Além disso, só é possível visualizar os jobs que estão ativamente programados com
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>
Observe que unscheduled-job
não está listado na saída kf job-schedules
.
Cancelar a programação de um job
É possível interromper um job programado com o comando kf delete-job-schedule
.
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 uma vaga
O job inteiro pode ser excluído com o comando kf delete-job
.
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 as excluirá de modo forçado.
Se quiser garantir que as tarefas em execução não sejam interrompidas, primeiro exclua
a programação de jobs com kf delete-job-schedule
, aguarde a conclusão de todas as tarefas
e, em seguida, exclua o job chamando kf delete-job
.