Zum Hauptinhalt springen

Scheduled Jobs

Ein Scheduled Job ist ein Befehl, der in regelmässigen Abständen gemäss einem vordefinierten Zeitplan ausgeführt wird. Der Befehl des Scheduled Jobs hat Zugriff auf dieselbe Umgebung und dieselben Binärdateien wie die Anwendungs-Runtime. Er kann entweder bei der Erstellung der Anwendung oder später mit dem Befehl update festgelegt werden.

Festlegen eines Scheduled Jobs bei der Erstellung einer Anwendung

Sie können einen Scheduled Job beim Erstellen einer Anwendung festlegen, indem Sie verschiedene Flags für Scheduled Jobs im Befehl nctl create app verwendest.

--scheduled-job-command="bundle exec rails runner"               Command to execute to start the scheduled job.
--scheduled-job-name=scheduled-1 Name of the scheduled job job to add.
--scheduled-job-size=micro Size (resources) of the scheduled job (defaults to "micro").
--scheduled-job-schedule="* * * * *" Cron notation string for the scheduled job (defaults to "* * * * *").

$ nctl create app --scheduled-job-command="sleep 5; date" --scheduled-job-name="myjob-1"

Der Scheduled Job wird entsprechend dem Schedule-Parameter ausgeführt. Der Parameter wird in Cron-Notation angegeben. Sie können diese Website verwenden, um Ihren Schedule besser zu verstehen.

Wenn der scheduled Job länger dauert als das definierte Intervall, wird die nächste Ausführung übersprungen. Laufende scheduled Jobs werden nicht unterbrochen.

Festlegen eines Scheduled Jobs auf anderen Configuration Layers

Da Scheduled Jobs Teil der Konfiguration einer Deploio Anwendung sind, können Sie diese auch auf anderen Configuration Layers definieren. Zum Beispiel können Sie einen Scheduled Job über die Git-Konfigurationsdatei .deploio.yaml festlegen:

scheduledJobs:
- command: sleep 60; date
name: scheduled-1
retries: 0
schedule: "*/5 * * * *"
size: micro
timeout: 5m0s

Aktualisieren und Löschen von Scheduled Jobs

Sie können dieselben Parameter wie oben mit nctl verwenden, um Ihren Scheduled Job zu aktualisieren:

--scheduled-job-command="bundle exec rails runner"               Command to execute to start the scheduled job.
--scheduled-job-name=scheduled-1 Name of the scheduled job job to add.
--scheduled-job-size=micro Size (resources) of the scheduled job (defaults to "micro").
--scheduled-job-schedule="* * * * *" Cron notation string for the scheduled job (defaults to "* * * * *").

$ nctl update app --scheduled-job-command="sleep 50; date" --scheduled-job-name="myjob-1"

Um einen Scheduled Job zu löschen, können Sie auch den Update-Befehl verwenden:

--delete-scheduled-job=DELETE-SCHEDULED-JOB                      Delete a scheduled job by name

$ nctl update app --delete-scheduled-job="myjob-1"

Anzeigen des Status eines Scheduled Jobs

Falls ein Scheduled Job fehlschlägt, wird der zugehörige Release nicht als fehlgeschlagen markiert, sondern weiterhin ausgeführt. Um den detaillierten Status eines Scheduled Jobs zu sehen, können Sie den vollständigen Release abrufen:

$ nctl get releases brave-scrambler-vc78b -o yaml
[...]
status:
atProvider:
scheduledJobStatus:
- name: scheduled-1
replicaObservation:
- replicaName: go-scheduled-scheduled-1-29038220
status: succeeded

Am Ende des Release können Sie den Status sehen, und es wird im Detail der Status des Scheduled Jobs angezeigt. Zusätzlich zum Status wird das Log des Scheduled Jobs in das normale Anwendung Log geschrieben und kann mit dem Befehl nctl logs app abgerufen werden.