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.