Aufgaben planen

Sie können kurzlebige Workflows ausführen, indem Sie sie als Tasks ausführen. Unter Aufgaben ausführen wird beschrieben, wie Sie Aufgaben unter Anwendungen ausführen.

Sie können Aufgaben auch so planen, dass sie in wiederkehrenden Intervallen ausgeführt werden, die im Format unix-cron angegeben sind. Bei geplanten Aufgaben übertragen Sie zuerst eine Anwendung, die die Aufgabe ausführt, wie bei einer nicht geplanten Aufgabe, und erstellen dann einen Job, um die Aufgabe zu planen.

In einem Zeitplan können Sie festlegen, ob die Aufgabe mehrmals am Tag oder an bestimmten Tagen und in bestimmten Monaten ausgeführt wird.

App zum Ausführen geplanter Aufgaben per Push übertragen

  1. Klonen Sie das test-app-Repository:

    git clone https://github.com/cloudfoundry-samples/test-app test-app
    cd test-app
  2. Übertragen Sie die Anwendung per Push.

    Übertragen Sie die Anwendung mit dem Befehl kf push APP_NAME --task per Push. Das Flag --task gibt an, dass die Anwendung für die Ausführung von Aufgaben verwendet werden soll. Daher werden keine Routen in der App erstellt und nicht als lang andauernde Anwendung bereitgestellt.

    kf push test-app --task
  3. Prüfen Sie, ob keine App-Instanzen oder Routen erstellt wurden, indem Sie die Anwendung auflisten.

    kf apps

    Die Anwendung wird nicht gestartet und enthält keine URLs:

    Listing Apps in Space: test-space
    Name                     Instances  Memory  Disk  CPU   URLs
    test-app                 stopped    1Gi     1Gi   100m  <nil>
    

Job erstellen

Um eine Aufgabe nach einem Zeitplan auszuführen, müssen Sie zuerst einen Job erstellen, der die Aufgabe beschreibt:

kf create-job test-app test-job "printenv"

Der Job startet angehalten oder ist nicht geplant und erstellt Aufgaben erst, wenn er manuell von kf run-job ausgeführt oder von kf schedule-task geplant wird.

Job manuell ausführen

Jobs können ähnlich wie bei kf run-task mit Ad-hoc-Aufgaben ausgeführt werden. Diese Option kann nützlich sein, um den Job vor dem Planen oder Ausführen zusätzlich zum Zeitplan zu testen.

kf run-job test-job

Mit diesem Befehl wird die vom Job definierte Aufgabe sofort ein einziges Mal ausgeführt.

Job planen

Wenn Sie den Job für die Ausführung planen möchten, müssen Sie im Befehl kf schedule-job einen Unix-Cron-Zeitplan angeben.

kf schedule-job test-job "* * * * *"

Dieser Befehl löst den Job aus, um Aufgaben nach dem angegebenen Zeitplan automatisch zu erstellen. In diesem Beispiel wird jede Minute eine Aufgabe ausgeführt.

Sie können den Zeitplan eines Jobs aktualisieren, indem Sie kf schedule-task mit einem neuen Zeitplan ausführen. Jobs in Kf können nur einen einzigen Cron-Zeitplan haben. Dies unterscheidet sich vom PCF-Planer, der mehrere Zeitpläne für einen einzelnen Job zulässt. Wenn Sie mehrere Cron-Zeitpläne benötigen, können Sie dies mit mehreren Jobs erreichen.

Jobs und Zeitpläne verwalten

Mit dem Befehl kf jobs können Sie alle geplanten und nicht geplanten Jobs im aktuellen Space anzeigen.

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

Außerdem können Sie nur Jobs anzeigen, die aktiv mit dem Befehl kf job-schedules geplant werden.

$ kf job-schedules
Listing job schedules in Space: test space
Name           Schedule   Suspend  LastSchedule  Age  Ready  Reason
test-job       * * * * *  <nil>    16s           2m   True   <nil>

Beachten Sie, dass unscheduled-job nicht in der Ausgabe kf job-schedules aufgeführt ist.

Zeitplan eines Jobs abbrechen

Sie können einen geplanten Job mit dem Befehl kf delete-job-schedule anhalten.

kf delete-job-schedule test-job

Mit diesem Befehl wird der Job angehalten und keine Aufgaben mehr nach dem vorherigen Zeitplan erstellt. Der Job wird nicht gelöscht und kann noch einmal von kf schedule-job geplant werden, um die Ausführung fortzusetzen.

Job löschen

Mit dem Befehl kf delete-job kann der gesamte Job gelöscht werden.

kf delete-job test-job

Dieser Befehl löscht den Job und alle vom Job erstellten Aufgaben, sowohl geplante als auch manuelle Ausführungen. Wenn noch Tasks ausgeführt werden, werden sie mit diesem Befehl erzwungen.

Wenn Sie vermeiden möchten, dass laufende Aufgaben unterbrochen werden, löschen Sie zuerst den Jobplan mit kf delete-job-schedule, warten Sie, bis alle Aufgaben abgeschlossen sind, und löschen Sie den Job dann durch Aufrufen von kf delete-job.