Aufgaben planen

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

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

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

Anwendung zum Ausführen geplanter Tasks 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 Tasks verwendet werden soll. Daher werden keine Routen in der Anwendung erstellt und sie wird nicht als langfristige Anwendung bereitgestellt.

    kf push test-app --task
  3. Bestätigen Sie, dass keine Anwendungsinstanzen 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 einen Task nach einem Zeitplan auszuführen, müssen Sie zuerst einen Job erstellen, der den Task beschreibt:

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

Der Job startet als angehalten oder nicht geplant und erstellt Tasks 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 der Task-Ausführung durch kf run-task ad hoc ausgeführt werden. Diese Option kann nützlich sein, um den Job nach Bedarf vor dem Planen oder Ausführen zusätzlich zum Zeitplan zu testen.

kf run-job test-job

Mit diesem Befehl wird der vom Job definierte Task 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 Tasks nach dem angegebenen Zeitplan automatisch zu erstellen. In diesem Beispiel wird jede Minute ein Task 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 Scheduler, 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 Bereich 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 sind.

$ 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 von 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 Tasks mehr nach dem vorherigen Zeitplan erstellt. Der Job wird nicht gelöscht und kann noch einmal über 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

Mit diesem Befehl werden der Job und alle vom Job erstellten Tasks gelöscht, sowohl geplante als auch manuelle Ausführungen. Wenn noch Tasks ausgeführt werden, wird deren Löschen mit diesem Befehl erzwungen.

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