Pianificazione di attività

Puoi eseguire flussi di lavoro di breve durata come Attività. Esecuzione di Tasks descrive come eseguire Tasks in App.

Puoi anche pianificare l'esecuzione delle attività a intervalli ricorrenti specificati utilizzando il formato unix-cron. Con le attività pianificate, prima esegui il push di un'app che esegue l'attività come fai con un'attività non pianificata, quindi crei un job per pianificarla.

Puoi definire una pianificazione in modo che l'attività venga eseguita più volte al giorno o in giorni e mesi specifici.

Esegui il push di un'app per l'esecuzione di attività pianificate

  1. Clona il repository app di test:

    git clone https://github.com/cloudfoundry-samples/test-app test-app
    cd test-app
    
  2. 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 deve essere utilizzata per l'esecuzione di Tasks. Di conseguenza, nell'app non verranno create route e non ne verrà eseguito il deployment come applicazione a lunga esecuzione.

    kf push test-app --task
    
  3. Verifica che non siano state create istanze o route dell'app elencando l'app:

    kf apps
    

    Nota 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 sospeso o non pianificato e non crea attività finché non viene eseguito manualmente da kf run-job o pianificato entro il giorno kf schedule-task.

Esegui un job manualmente

I job possono essere eseguiti ad hoc, in modo simile all'esecuzione di Tasks tramite kf run-task. Questa opzione può essere utile per testare il job prima della pianificazione o dell'esecuzione secondo necessità, oltre alla pianificazione.

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 le 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. È diverso da PCF Scheduler, che consente più pianificazioni per un singolo job. Se hai bisogno di più pianificazioni cron, puoi farlo con più job.

Gestisci 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 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>

Nota come unscheduled-job non è elencato nell'output kf job-schedules.

Annulla la pianificazione di un job

Puoi arrestare un job programmato con il comando kf delete-job-schedule:

kf delete-job-schedule test-job

Questo comando sospende il job e interrompe la creazione di attività nella pianificazione precedente. Il job non viene eliminato e può essere pianificato di nuovo entro il giorno kf schedule-job per continuare l'esecuzione.

Eliminazione di un job

Puoi eliminare l'intero job con il comando kf delete-job:

kf delete-job test-job

Questo comando elimina il job e tutte le attività create dal job, sia pianificate che manuali. Le attività ancora in esecuzione vengono eliminate 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 il numero kf delete-job.