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
Klonen Sie das Test-App-Repository:
git clone https://github.com/cloudfoundry-samples/test-app test-app
cd test-app
Ü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
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
.