Auf dieser Seite wird beschrieben, wie Sie Aufgaben automatisch wiederholen können, oder Fehler auftreten.
Ein Batchjob schlägt fehl, wenn mindestens eine seiner Aufgaben fehlschlägt. aus verschiedenen Gründen. Standardmäßig wird jede Aufgabe in einem Job nur einmal ausgeführt. wenn eine Aufgabe fehlschlägt, wird sie nicht wiederholt. Einige Probleme, die dazu führen, kann durch wiederholtes Wiederholen der Aufgabe einfach behoben werden. In diesen Fällen Wenn Sie den Job so konfigurieren, dass Aufgaben automatisch wiederholt werden, kann dies erheblich dazu beitragen, Fehlerbehebung und die Gesamtlaufzeit Ihrer Jobs.
Automatische Wiederholungsversuche eignen sich gut für Lose verknüpfte (unabhängige) Aufgaben und kann bei vielen Problemen helfen. Zum Beispiel automatische Aufgabenwiederholungen zeitkritische Probleme wie die folgenden beheben können:
- vorzeitiges Beenden von Spot-VMs
- VM-Wartungsereignisse und Hostfehler
- Vorübergehende Netzwerkfehler
Sie können automatische Aufgabenwiederholungen für jede Aufgabe konfigurieren, wenn Sie einen Job erstellen. Genauer gesagt können Sie für jede Aufgabe eine der folgenden Optionen verwenden: Konfigurationsoptionen:
- Standardmäßig werden Aufgaben nach einem Scheitern nicht wiederholt.
- Aufgaben bei allen Fehlern wiederholen: Sie können wie oft fehlgeschlagene Aufgaben maximal wiederholt werden sollen. Ich kann einen Wert zwischen 0 (Standardeinstellung) und 10 Wiederholungen angeben.
- Wiederholen Sie die Aufgaben bei einigen Fehlern: Sie können verschiedene Aufgaben Aktionen – entweder automatische Wiederholung oder Fehler ohne Wiederholung – für Fehler. Bei allen nicht angegebenen Fehlern wird die gegenteilige Aktion ausgeführt. Spezifische Fehler können jeweils durch einen Exit-Code identifiziert werden, der Anwendung oder Batch definiert wurde.
Hinweise
- Wenn Sie Batch zum ersten Mal verwenden, lesen Sie Erste Schritte mit Batch und aktivieren Sie Batch, indem Sie den Voraussetzungen für Projekte und Nutzer.
-
Um die Berechtigungen zu erhalten, die Sie zum Erstellen eines Jobs benötigen, bitten Sie Ihren Administrator, Ihnen folgenden IAM-Rollen:
-
Batch-Job-Editor (
roles/batch.jobsEditor
) für das Projekt -
Dienstkontonutzer (
roles/iam.serviceAccountUser
) für das Dienstkonto des Jobs, das standardmäßig das Compute Engine-Standarddienstkonto ist
Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.
Sie können die erforderlichen Berechtigungen auch über benutzerdefinierte Rollen oder andere vordefinierte Rollen erhalten.
-
Batch-Job-Editor (
Aufgaben für alle Fehler wiederholen
Sie können die
Maximale Anzahl automatischer Wiederholungsversuche (Feld maxRetryCount
)
für fehlgeschlagene Aufgaben eines Jobs mithilfe der gcloud CLI oder Batch API ermitteln.
gcloud
Erstellen Sie eine JSON-Datei, die die Konfigurationsdetails des Jobs und den
maxRetryCount
.Um beispielsweise einen einfachen Skriptjob zu erstellen, in dem das maximale für fehlgeschlagene Aufgaben versucht, eine JSON-Datei mit folgendem Inhalt zu erstellen:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}" } } ], "maxRetryCount": MAX_RETRY_COUNT }, "taskCount": 3 } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Ersetzen Sie
MAX_RETRY_COUNT
durch die maximale Anzahl. von Wiederholungsversuchen für jede Aufgabe. Damit ein Job fehlgeschlagene Aufgaben wiederholen kann, Dieser Wert muss auf eine Ganzzahl zwischen1
und10
festgelegt werden. Wenn das FeldmaxRetryCount
nicht angegeben ist, ist der Standardwert0
, Das bedeutet, dass keine Aufgaben wiederholt werden.Verwenden Sie zum Erstellen und Ausführen des Jobs die Methode
gcloud batch jobs submit
-Befehl:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Ersetzen Sie Folgendes:
JOB_NAME
: der Name des Jobs.LOCATION
: der Standort des Jobs.JSON_CONFIGURATION_FILE
: Pfad für ein JSON-Objekt mit den Konfigurationsdetails des Jobs.
API
Stellen Sie eine POST
-Anfrage an den
Methode jobs.create
der das Feld maxRetryCount
angibt.
Um beispielsweise einen einfachen Skriptjob zu erstellen, in dem das maximale für fehlgeschlagene Aufgaben zu versuchen, stellen Sie folgende Anfrage:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}"
}
}
],
"maxRetryCount": MAX_RETRY_COUNT
},
"taskCount": 3
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Ersetzen Sie Folgendes:
PROJECT_ID
: die Projekt-ID Ihres Projekts.LOCATION
: der Standort des Jobs.JOB_NAME
: der Name des Jobs.MAX_RETRY_COUNT
: die maximale Anzahl von Wiederholungsversuchen für jede Aufgabe. Damit ein Job fehlgeschlagene Aufgaben wiederholen kann, Dieser Wert muss auf eine Ganzzahl zwischen1
und10
festgelegt werden. Wenn das FeldmaxRetryCount
nicht angegeben ist, ist der Standardwert0
, Das bedeutet, dass keine Aufgaben wiederholt werden.
Aufgaben bei einigen Fehlern wiederholen
Sie können definieren, wie ein Job verschiedene Aufgabenfehler behandeln soll, indem Sie
Lebenszyklusrichtlinien (Feld lifecyclePolicies[]
).
Eine Lebenszyklusrichtlinie besteht aus einem
action (Feld action
),
Aktionsbedingung (Feld actionCondition
),
und Exit-Code (Feld exitCodes[]
).
Die angegebene Aktion wird immer dann ausgeführt, wenn der
Aktionsbedingungen – ein bestimmter Exit-Code – auftritt.
Sie können eine der folgenden Aktionen angeben:
RETRY_TASK
: Aufgaben wiederholen, die mit den angegebenen Exit-Codes imexitCodes[]
. Aufgaben, die mit nicht angegebenen Exit-Codes fehlschlagen, sind nicht erneut versucht.FAIL_TASK
: Es werden keine Aufgaben wiederholt, die mit den angegebenen Exit-Codes imexitCodes[]
. Aufgaben, die mit nicht angegebenen Exit-Codes fehlschlagen, sind den Vorgang wiederholen.
Alle Aufgaben, die mit nicht angegebenen Exit-Codes fehlschlagen, erhalten
gegensätzliche Aktion – einige Exit-Codes werden wiederholt, andere schlagen fehl.
Damit die Lebenszyklusrichtlinie
wie erwartet funktioniert,
müssen Sie auch die
Maximale Anzahl automatischer Wiederholungsversuche (Feld maxRetryCount
)
damit der Job fehlgeschlagene Aufgaben automatisch mindestens einmal wiederholen kann.
Jeder Exit-Code steht für einen spezifischen Fehler, der entweder aus Ihrer Anwendung oder Batch. Die Exit-Codes von 50001 bis 59999 sind reserviert und durch Batch. Weitere Informationen zu reservierten Exit-Codes finden Sie unter Fehlerbehebung
Sie können festlegen, dass ein Job Aufgaben nach bestimmten Fehlern wiederholt oder fehlschlagen soll mit der gcloud CLI oder Batch API verwenden.
gcloud
Erstellen Sie eine JSON-Datei mit den Konfigurationsdetails des Jobs, dem
maxRetryCount
und die UnterfelderlifecyclePolicies[]
.So erstellen Sie einen einfachen Skriptjob, der fehlgeschlagene Aufgaben nur für Exit-Codes eingerichtet haben, erstellen Sie eine JSON-Datei mit folgendem Inhalt:
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "echo Hello world from task ${BATCH_TASK_INDEX}" } } ], "maxRetryCount": MAX_RETRY_COUNT, "lifecyclePolicies": [ { "action": "ACTION", "actionCondition": { "exitCodes": [EXIT_CODES] } } ] } } ], "logsPolicy": { "destination": "CLOUD_LOGGING" } }
Ersetzen Sie Folgendes:
MAX_RETRY_COUNT
: die maximale Zahl von Wiederholungsversuchen für jede Aufgabe. Damit ein Job fehlgeschlagene Aufgaben wiederholen kann, Dieser Wert muss auf eine Ganzzahl zwischen1
und10
festgelegt werden. Wenn das FeldmaxRetryCount
nicht angegeben ist, ist der Standardwert0
, Das bedeutet, dass keine Aufgaben wiederholt werden.ACTION
: die Aktion, entwederRETRY_TASK
oderFAIL_TASK
für Aufgaben, bei denen ein Fehler auftritt die angegebenen Exit-Codes. Aufgaben, die mit einem nicht angegebenen Exit fehlschlagen führen die Codes die andere Aktion aus.EXIT_CODES
: eine durch Kommas getrennte Liste von einen oder mehrere Exit-Codes, die den angegebenen Aktion, z. B.50001, 50002
.Jeder Exit-Code kann von Ihrer Anwendung oder Batch. Die Exit-Codes von
50001
bis59999
sind von Batch reserviert. Weitere Informationen zu reservierten Exit-Codes finden Sie unter Fehlerbehebung
Der folgende Job wiederholt beispielsweise nur Aufgaben, die aufgrund bis hin zum vorzeitigen Beenden von Spot-VMs.
{ "taskGroups": [ { "taskSpec": { "runnables": [ { "script": { "text": "sleep 30" } } ], "maxRetryCount": 3, "lifecyclePolicies": [ { "action": "RETRY_TASK", "actionCondition": { "exitCodes": [50001] } } ] } } ], "allocationPolicy": { "instances": [ { "policy": { "machineType": "e2-standard-4", "provisioningModel": "SPOT" } } ] } }
Verwenden Sie zum Erstellen und Ausführen des Jobs die Methode
gcloud batch jobs submit
-Befehl:gcloud batch jobs submit JOB_NAME \ --location LOCATION \ --config JSON_CONFIGURATION_FILE
Ersetzen Sie Folgendes:
JOB_NAME
: der Name des Jobs.LOCATION
: der Standort des Jobs.JSON_CONFIGURATION_FILE
: Pfad für ein JSON-Objekt mit den Konfigurationsdetails des Jobs.
API
Stellen Sie eine POST
-Anfrage an den
Methode jobs.create
gibt das Feld maxRetryCount
und die Unterfelder lifecyclePolicies[]
an.
So erstellen Sie einen einfachen Skriptjob, der fehlgeschlagene Aufgaben nur für einige Exit-Codes möchten, stellen Sie folgende Anfrage:
POST https://batch.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/jobs?job_id=JOB_NAME
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "echo Hello world from task ${BATCH_TASK_INDEX}"
}
}
],
"maxRetryCount": MAX_RETRY_COUNT,
"lifecyclePolicies": [
{
"action": "ACTION",
"actionCondition": {
"exitCodes": [EXIT_CODES]
}
}
]
}
}
],
"logsPolicy": {
"destination": "CLOUD_LOGGING"
}
}
Ersetzen Sie Folgendes:
PROJECT_ID
: die Projekt-ID Ihres Projekts.LOCATION
: der Standort des Jobs.JOB_NAME
: der Name des Jobs.MAX_RETRY_COUNT
: die maximale Zahl von Wiederholungsversuchen für jede Aufgabe. Damit ein Job fehlgeschlagene Aufgaben wiederholen kann, Dieser Wert muss auf eine Ganzzahl zwischen1
und10
festgelegt werden. Wenn das FeldmaxRetryCount
nicht angegeben ist, ist der Standardwert0
, Das bedeutet, dass keine Aufgaben wiederholt werden.ACTION
: die Aktion, entwederRETRY_TASK
oderFAIL_TASK
für Aufgaben, bei denen ein Fehler auftritt die angegebenen Exit-Codes. Aufgaben, die mit einem nicht angegebenen Exit fehlschlagen führen die Codes die andere Aktion aus.EXIT_CODES
: eine durch Kommas getrennte Liste von einen oder mehrere Exit-Codes, die den angegebenen Aktion, z. B.50001, 50002
.Jeder Exit-Code kann von Ihrer Anwendung oder Batch. Die Exit-Codes von
50001
bis59999
sind von Batch reserviert. Weitere Informationen zu reservierten Exit-Codes finden Sie unter Fehlerbehebung
Der folgende Job wiederholt beispielsweise nur Aufgaben, die aufgrund bis hin zum vorzeitigen Beenden von Spot-VMs.
POST https://batch.googleapis.com/v1/projects/example-project/locations/us-central1/jobs?job_id=example-job
{
"taskGroups": [
{
"taskSpec": {
"runnables": [
{
"script": {
"text": "sleep 30"
}
}
],
"maxRetryCount": 3,
"lifecyclePolicies": [
{
"action": "RETRY_TASK",
"actionCondition": {
"exitCodes": [50001]
}
}
]
}
}
],
"allocationPolicy": {
"instances": [
{
"policy": {
"machineType": "e2-standard-4",
"provisioningModel": "SPOT"
}
}
]
}
}
Aufgabenverhalten basierend auf der Anzahl der Wiederholungsversuche ändern
Optional, nachdem Sie automatische Wiederholungsversuche für eine Aufgabe aktiviert haben
wie in den vorherigen Abschnitten auf dieser Seite beschrieben, können Sie
Aktualisieren Sie Ihre Runnables, um die
BATCH_TASK_RETRY_ATTEMPT
vordefinierte Umgebungsvariable.
Die Variable BATCH_TASK_RETRY_ATTEMPT
beschreibt, wie oft
dass diese Aufgabe bereits versucht wurde. Verwenden Sie die Methode
BATCH_TASK_RETRY_ATTEMPT
in Ihren Runnables, wenn Sie möchten
das sich je nach Anzahl der Wiederholungen
unterschiedlich verhält.
Wenn z. B. eine Aufgabe wiederholt wird, möchten Sie vielleicht
um zu erfahren, welche Befehle bereits in
aus dem vorherigen Versuch. Weitere Informationen finden Sie unter
Vordefinierte Umgebungsvariablen:
Nächste Schritte
- Wenn beim Erstellen oder Ausführen eines Jobs Probleme auftreten, lesen Sie den Abschnitt Fehlerbehebung.
- Aufträge und Aufgaben ansehen
- Weitere Informationen zu Optionen für die Joberstellung