Puoi eseguire flussi di lavoro di breve durata eseguendoli come Attività. Attività in esecuzione descrive come eseguire Tasks in Applicazioni.
Puoi anche pianificare l'esecuzione delle attività a intervalli ricorrenti specificato mediante il formato unix-cron. Con le attività pianificate, innanzitutto esegui il push di un'app che esegue l'attività come faresti con un'attività non pianificata. e poi creo un job per pianificare l'attività.
Puoi definire una pianificazione in modo che l'attività venga eseguita più volte al giorno o in orari specifici giorni e mesi.
Esegui il push di un'app per eseguire attività pianificate
Clona il repo di test-app:
git clone https://github.com/cloudfoundry-samples/test-app test-app
cd test-app
Esegui il push dell'app.
Esegui il push dell'app con il comando
kf push APP_NAME --task
. Il flag--task
indica che l'app è destinata a essere utilizzata per eseguire Tasks, quindi non verranno create route sull'app e non ne verrà eseguito il deployment come applicazione a lunga esecuzione.kf push test-app --task
Verifica che non siano state create istanze o route dell'app elencando l'app:
kf apps
Tieni presente che l'app non viene avviata e non ha URL:
Listing Apps in Space: test-space Name Instances Memory Disk CPU URLs test-app stopped 1Gi 1Gi 100m <nil>
Crea un job
Per eseguire un'attività in base a una pianificazione, devi prima creare un job che ne descriva l'attività:
kf create-job test-app test-job "printenv"
Il job viene avviato sospeso o non pianificato e non crea attività fino a quando
eseguito manualmente da kf run-job
o programmato da kf schedule-task
.
Esegui un job manualmente
I job possono essere eseguiti ad hoc in modo simile all'esecuzione di Tasks di kf run-task
. Questa opzione
può essere utile per testare il job prima di pianificarlo o eseguirlo in base alle esigenze, oltre a
al programma.
kf run-job test-job
Questo comando esegue immediatamente l'attività definita dal job una sola volta.
Programma un job
Per pianificare l'esecuzione del job, devi fornire una pianificazione unix-cron nel
Comando kf schedule-job
:
kf schedule-job test-job "* * * * *"
Questo comando attiva il job in modo che crei automaticamente attività in base alla pianificazione specificata. In questo esempio, viene eseguita un'attività ogni minuto.
Puoi aggiornare la pianificazione di un job eseguendo kf schedule-task
con una nuova pianificazione.
I job in Kf possono avere una sola pianificazione cron. Questo è diverso
dallo scheduler di PCF, che permette più pianificazioni per un singolo job.
Se hai bisogno di più pianificazioni cron, puoi farlo con più job.
Gestione di job e pianificazioni
Visualizza tutti i job, sia pianificati che non pianificati, nello spazio attuale utilizzando
il 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>
Inoltre, puoi visualizzare solo i job pianificati attivamente
il 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>
Nota che unscheduled-job
non viene elencato nell'output kf job-schedules
.
Annulla la pianificazione di un job
Puoi arrestare un job pianificato con il comando kf delete-job-schedule
:
kf delete-job-schedule test-job
Questo comando sospende il job e ne impedisce la creazione di attività in base alla pianificazione precedente.
Il job non è stato eliminato e può essere programmato di nuovo entro il giorno kf schedule-job
per continuare l'esecuzione.
Elimina un job
L'intero job può essere eliminato con il comando kf delete-job
:
kf delete-job test-job
Questo comando elimina il job e tutte le attività da esso create sia pianificate che manuali. Se alcune attività sono ancora in esecuzione, questo comando le elimina con forza.
Se vuoi assicurarti che l'esecuzione delle attività non venga interrotta, elimina prima
la pianificazione dei job con kf delete-job-schedule
, attendi il completamento di tutte le attività,
ed eliminare il job chiamando kf delete-job
.