Pode executar fluxos de trabalho de curta duração executando-os como tarefas. Executar tarefas descreve como executar tarefas em Apps.
Também pode agendar a execução de tarefas em intervalos recorrentes especificados através do formato unix-cron. Com as tarefas agendadas, primeiro envia uma app que executa a tarefa, tal como faz com uma tarefa não agendada. Em seguida, cria um trabalho para agendar a tarefa.
Pode definir uma programação para que a sua tarefa seja executada várias vezes por dia ou em dias e meses específicos.
Envie uma app para executar tarefas agendadas
Clone o repositório test-app.
git clone https://github.com/cloudfoundry-samples/test-app test-app
cd test-app
Envie a app.
Envie a app com o comando
kf push APP_NAME --task
. A flag--task
indica que a app se destina a ser usada para executar tarefas e, por isso, não são criadas rotas na app, e esta não é implementada como uma aplicação de execução prolongada.kf push test-app --task
Confirme que não foram criadas instâncias nem rotas de apps ao listar a app.
kf apps
Repare que a app não é iniciada e não tem URLs.
Listing Apps in Space: test-space Name Instances Memory Disk CPU URLs test-app stopped 1Gi 1Gi 100m <nil>
Crie um trabalho
Para executar uma tarefa de acordo com uma programação, primeiro tem de criar um trabalho que descreva a tarefa.
kf create-job test-app test-job "printenv"
A tarefa é iniciada suspensa ou não agendada e não cria tarefas até ser executada manualmente por kf run-job
ou agendada por kf schedule-task
.
Execução manual
Os trabalhos podem ser executados ad hoc de forma semelhante à execução de tarefas por kf run-task
. Esta opção pode ser útil para testar a tarefa antes de a agendar ou executar conforme necessário, além do agendamento.
kf run-job test-job
Este comando executa a tarefa definida pelo trabalho imediatamente uma única vez.
Agendar uma tarefa
Para agendar a tarefa para execução, tem de fornecer um agendamento unix-cron no comando
kf schedule-job
.
kf schedule-job test-job "* * * * *"
Este comando aciona a criação automática de tarefas pelo trabalho no horário especificado. Neste exemplo, uma tarefa é executada a cada minuto.
Pode atualizar a agenda de uma tarefa executando kf schedule-task
com uma nova agenda.
Os trabalhos no Kf só podem ter um único agendamento cron. Isto difere do programador do PCF, que permite várias programações para uma única tarefa.
Se precisar de várias programações cron, pode consegui-lo com várias tarefas.
Gerir trabalhos e agendamentos
Veja todas as tarefas, agendadas e não agendadas, no espaço atual através do 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ó pode ver tarefas agendadas ativamente 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>
Repare que o unscheduled-job
não está listado na saída kf job-schedules
.
Cancelar o horário de um trabalho
Pode parar uma tarefa agendada com o comando kf delete-job-schedule
.
kf delete-job-schedule test-job
Este comando suspende a tarefa e impede que crie tarefas na programação anterior.
A tarefa não é eliminada e pode ser agendada novamente por kf schedule-job
para continuar a execução.
Elimine uma tarefa
Pode eliminar toda a tarefa com o comando kf delete-job
.
kf delete-job test-job
Este comando elimina a tarefa e todas as tarefas criadas pela tarefa, tanto as execuções agendadas como as manuais. Se ainda existirem tarefas em execução, este comando elimina-as à força.
Se quiser garantir que as tarefas em execução não são interrompidas, elimine primeiro o horário dos trabalhos com kf delete-job-schedule
, aguarde que todas as tarefas sejam concluídas e, em seguida, elimine o trabalho chamando kf delete-job
.