Puoi eseguire workflow di breve durata eseguendoli come attività. Esecuzione attività descrive come eseguire le attività in App.
Puoi anche pianificare l'esecuzione delle attività a intervalli ricorrenti specificati utilizzando il formato unix-cron. Con le attività pianificate, devi prima eseguire il push di un'app che esegue l'attività come faresti con un'attività non pianificata, quindi creare un job per pianificare l'attività.
Puoi definire una pianificazione in modo che l'attività venga eseguita più volte al giorno o in giorni e mesi specifici.
Eseguire il push di un'app per l'esecuzione di attività pianificate
Clona il repository test-app:
git clone https://github.com/cloudfoundry-samples/test-app test-appcd test-appEsegui il push dell'app.
Esegui il push dell'app con il comando
kf push APP_NAME --task. Il flag--taskindica che l'app è destinata all'esecuzione di attività, pertanto non verranno creati route sull'app e non verrà eseguito il deployment come applicazione a lunga esecuzione.kf push test-app --taskVerifica che non siano state create istanze o route dell'app elencando l'app:
kf appsTieni presente che l'app non è stata 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 descriva l'attività:
kf create-job test-app test-job "printenv"Il job viene avviato in stato sospeso o non pianificato e non crea attività finché non viene eseguito manualmente da kf run-job o pianificato da kf schedule-task.
Esegui un job manualmente
I job possono essere eseguiti ad hoc in modo simile all'esecuzione delle attività tramite kf run-task. Questa opzione può essere utile per testare il job prima di pianificarlo o eseguirlo in base alle esigenze, oltre alla pianificazione.
kf run-job test-jobQuesto comando esegue l'attività definita dal job una sola volta immediatamente.
Pianifica 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 per creare automaticamente attività in base alla pianificazione specificata. In questo esempio, un'attività viene eseguita 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 da PCF Scheduler, che consente più pianificazioni per un singolo job.
Se hai bisogno di più pianificazioni cron, puoi ottenerle con più job.
Gestisci job e pianificazioni
Visualizza tutti i job, sia pianificati che non pianificati, nello spazio corrente 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 con 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>
Tieni presente che unscheduled-job non è elencato nell'output di kf job-schedules.
Annulla la pianificazione di un job
Puoi interrompere un job pianificato con il comando kf delete-job-schedule:
kf delete-job-schedule test-jobQuesto comando sospende il job e impedisce la creazione di attività in base alla pianificazione precedente.
Il job non viene eliminato e può essere pianificato di nuovo da 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-jobQuesto comando elimina il job e tutte le attività create dal job, sia le esecuzioni pianificate che quelle manuali. Se sono ancora in esecuzione attività, questo comando le elimina forzatamente.
Se vuoi assicurarti che le attività in esecuzione non vengano interrotte, elimina prima
la pianificazione dei job con kf delete-job-schedule, attendi il completamento di tutte le attività,
quindi elimina il job chiamando kf delete-job.