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
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 Aufgaben verwendet werden soll. Daher werden keine Routen in der App erstellt und nicht als lang andauernde Anwendung bereitgestellt.kf push test-app --task
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
.