Como programar tarefas

É 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

  1. Clone o repositório do test-app:

    git clone https://github.com/cloudfoundry-samples/test-app test-app
    cd test-app
  2. 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
  3. 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.

Como executar 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.

Como 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.

Como gerenciar jobs e programações

Para conferir todos os jobs do Space 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.

Como 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.