BatchJobPreparationTask interface
Eine Aufgabe zur Auftragsvorbereitung, die vor allen Aufgaben des Auftrags auf einem beliebigen Computeknoten ausgeführt werden soll. Sie können die Auftragsvorbereitung verwenden, um einen Knoten zum Ausführen von Aufgaben für den Auftrag vorzubereiten. Aktivitäten, die häufig in der Auftragsvorbereitung ausgeführt werden, umfassen: Das Herunterladen allgemeiner Ressourcendateien, die von allen Vorgängen im Auftrag verwendet werden. Der Auftragsvorbereitungsvorgang kann diese allgemeinen Ressourcendateien auf den freigegebenen Speicherort auf dem Knoten herunterladen. (AZ_BATCH_NODE_ROOT_DIR\shared) oder starten Sie einen lokalen Dienst auf dem Knoten, damit alle Aufgaben dieses Auftrags mit diesem kommunizieren können. Wenn der Auftragsvorbereitungsvorgang fehlschlägt (d. h. die Wiederholungsanzahl wird ausgelastet, bevor er mit Exitcode 0 beendet wird), führt Batch keine Aufgaben dieses Auftrags auf dem Knoten aus. Der Computeknoten bleibt für die Ausführung von Aufgaben dieses Auftrags nicht zuzuverwenden, bis es um eine Erneutes Image erstellt wird. Der Computeknoten bleibt aktiv und kann für andere Aufträge verwendet werden. Die Auftragsvorbereitungsaufgabe kann mehrmals auf demselben Knoten ausgeführt werden. Daher sollten Sie die Auftragsvorbereitungsaufgabe schreiben, um die erneute Ausführung zu verarbeiten. Wenn der Knoten neu gestartet wird, wird der Auftragsvorbereitungsvorgang erneut auf dem Computeknoten ausgeführt, bevor eine andere Aufgabe des Auftrags geplant wird, wenn "RerunOnNodeRebootAfterSuccess" erfüllt ist oder die Auftragsvorbereitungsaufgabe zuvor nicht abgeschlossen wurde. Wenn der Knoten neu umgestalten wird, wird der Auftragsvorbereitungsvorgang erneut ausgeführt, bevor eine Aufgabe des Auftrags geplant wird. Batch wiederholt Aufgaben, wenn ein Wiederherstellungsvorgang auf einem Knoten ausgelöst wird. Beispiele für Wiederherstellungsvorgänge sind (aber nicht beschränkt darauf), wenn ein fehlerhafter Knoten neu gestartet wird oder ein Computeknoten aufgrund eines Hostfehlers verschwunden ist. Wiederholungen aufgrund von Wiederherstellungsvorgängen sind unabhängig von und werden nicht für das maxTaskRetryCount gezählt. Auch wenn das maxTaskRetryCount 0 ist, kann ein interner Wiederholungsversuch aufgrund eines Wiederherstellungsvorgangs auftreten. Aus diesem Gründen sollten alle Aufgaben idempotent sein. Dies bedeutet, dass Aufgaben unterbrochen und neu gestartet werden müssen, ohne dass Beschädigte oder doppelte Daten verursacht werden. Die bewährte Methode für lange ausgeführte Aufgaben besteht darin, eine Form der Prüfpunkterstellung zu verwenden.
Eigenschaften
| command |
Die Befehlszeile der Aufgabe zur Jobvorbereitung. Die Befehlszeile wird nicht unter einer Shell ausgeführt und kann daher nicht von Shellfeatures wie der Erweiterung der Umgebungsvariablen profitieren. Wenn du solche Funktionen nutzen möchtest, solltest du die Shell in der Befehlszeile aufrufen, zum Beispiel mit "cmd /c MyCommand" in Windows oder "/bin/sh -c MyCommand" unter Linux. Wenn sich die Befehlszeile auf Dateipfade bezieht, sollte sie einen relativen Pfad (relativ zum Arbeitsverzeichnis "Aufgabe") verwenden oder die vom Batch bereitgestellte Umgebungsvariable (https://learn.microsoft.com/azure/batch/batch-compute-node-environment-variables) verwenden. |
| constraints | Einschränkungen, die für die Aufgabe zur Jobvorbereitung gelten. |
| container |
Die Einstellungen für den Container, unter dem die Aufgabe zur Jobvorbereitung ausgeführt wird. Wenn dies angegeben ist, werden alle Verzeichnisse rekursiv unterhalb der AZ_BATCH_NODE_ROOT_DIR (der Wurzel Azure Batch Verzeichnisse auf dem Knoten) in den Container abgebildet, alle Task-Umgebungsvariablen werden in den Container abgebildet und die Task-Befehlszeile wird im Container ausgeführt. Dateien, die außerhalb AZ_BATCH_NODE_ROOT_DIR im Container erzeugt werden, werden möglicherweise nicht auf die Host-Festplatte zurückgewiesen, was bedeutet, dass Batch-Datei-APIs nicht auf diese Dateien zugreifen können. |
| environment |
Eine Liste von Umgebungsvariablen-Einstellungen für die Aufgabe zur Jobvorbereitung. |
| id | Eine Zeichenkette, die die Aufgabe zur Jobvorbereitung innerhalb der Stelle eindeutig identifiziert. Die ID kann jede Kombination alphanumerischer Zeichen enthalten, einschließlich Bindestrichen und Unterstrichen, und darf nicht mehr als 64 Zeichen enthalten. Wenn Sie diese Eigenschaft nicht angeben, weist der Batch-Service den Standardwert 'Jobpreparation' zu. Keine andere Aufgabe im Job kann dieselbe ID wie die Aufgabe zur Jobvorbereitung haben. Wenn Sie versuchen, eine Aufgabe mit derselben ID einzureichen, lehnt der Batch-Service die Anfrage mit dem Fehlercode TaskIdSameAsJobPreparationTask ab; wenn du die REST-API direkt aufrufst, ist der HTTP-Statuscode 409 (Konflikt). |
| rerun |
Ob der Batch-Service die Job Preparation Task nach einem Neustart eines Compute Nodes erneut ausführen sollte. Die Job Preparation Task wird immer erneut ausgeführt, wenn ein Compute Node neu gebildet wird oder wenn die Job Preparation Task nicht abgeschlossen wurde (z. B. weil der Neustart während der Ausführung der Aufgabe stattfand). Daher sollten Sie immer eine Jobvorbereitungsaufgabe schreiben, die idempotent ist und sich korrekt verhält, wenn sie mehrmals ausgeführt wird. Der Standardwert lautet „true“. |
| resource |
Eine Liste der Dateien, die der Batchdienst vor dem Ausführen der Befehlszeile auf den Computeknoten herunterladen wird. Unter diesem Element aufgelistete Dateien befinden sich im Arbeitsverzeichnis der Aufgabe. Es gibt eine maximale Größe für die Liste der Ressourcendateien. Wenn die maximale Größe überschritten wird, schlägt die Anforderung fehl, und der Antwortfehlercode lautet "RequestEntityTooLarge". Wenn dies der Fall ist, muss die Sammlung von ResourceFiles in der Größe reduziert werden. Dies kann mithilfe von .zip Dateien, Anwendungspaketen oder Docker-Containern erreicht werden. |
| user |
Die Benutzeridentität, unter der die Aufgabe zur Jobvorbereitung ausgeführt wird. Wenn sie ausgelassen wird, läuft die Aufgabe als nicht-administrativer Benutzer, der einzigartig für die Aufgabe auf Windows Compute Nodes ist, oder als nicht-administrativer Benutzer, der einzigartig für den Pool auf Linux Compute Nodes ist. |
| wait |
Ob der Batch-Service warten sollte, bis die Jobvorbereitungs-Aufgabe erfolgreich abgeschlossen ist, bevor weitere Aufgaben des Jobs auf dem Rechenknoten geplant werden. Eine Aufgabe zur Jobvorbereitung ist erfolgreich abgeschlossen, wenn sie mit dem Ausgangscode 0 abgeschlossen wird. Wenn true und die Job Preparation Task an einem Knoten fehlschlägt, versucht der Batch-Service die Job Preparation Task bis zu ihrer maximalen Anzahl von Wiederholungen (wie im Constraints-Element angegeben) erneut. Wenn die Aufgabe nach allen erneuten Versuchen immer noch nicht erfolgreich abgeschlossen wurde, wird der Batch-Service die Aufgaben des Jobs nicht an den Node einplanen. Der Knoten bleibt aktiv und berechtigt, Aufgaben anderer Jobs auszuführen. Falls falsch, wartet der Batch-Service nicht auf Abschluss der Aufgabe zur Jobvorbereitung. In diesem Fall können andere Aufgaben des Jobs auf dem Rechenknoten ausgeführt werden, während die Aufgabe zur Jobvorbereitung noch läuft; und selbst wenn die Aufgabe zur Jobvorbereitung fehlschlägt, werden neue Aufgaben weiterhin auf dem Rechenknoten geplant. Der Standardwert lautet „true“. |
Details zur Eigenschaft
commandLine
Die Befehlszeile der Aufgabe zur Jobvorbereitung. Die Befehlszeile wird nicht unter einer Shell ausgeführt und kann daher nicht von Shellfeatures wie der Erweiterung der Umgebungsvariablen profitieren. Wenn du solche Funktionen nutzen möchtest, solltest du die Shell in der Befehlszeile aufrufen, zum Beispiel mit "cmd /c MyCommand" in Windows oder "/bin/sh -c MyCommand" unter Linux. Wenn sich die Befehlszeile auf Dateipfade bezieht, sollte sie einen relativen Pfad (relativ zum Arbeitsverzeichnis "Aufgabe") verwenden oder die vom Batch bereitgestellte Umgebungsvariable (https://learn.microsoft.com/azure/batch/batch-compute-node-environment-variables) verwenden.
commandLine: string
Eigenschaftswert
string
constraints
Einschränkungen, die für die Aufgabe zur Jobvorbereitung gelten.
constraints?: BatchTaskConstraints
Eigenschaftswert
containerSettings
Die Einstellungen für den Container, unter dem die Aufgabe zur Jobvorbereitung ausgeführt wird. Wenn dies angegeben ist, werden alle Verzeichnisse rekursiv unterhalb der AZ_BATCH_NODE_ROOT_DIR (der Wurzel Azure Batch Verzeichnisse auf dem Knoten) in den Container abgebildet, alle Task-Umgebungsvariablen werden in den Container abgebildet und die Task-Befehlszeile wird im Container ausgeführt. Dateien, die außerhalb AZ_BATCH_NODE_ROOT_DIR im Container erzeugt werden, werden möglicherweise nicht auf die Host-Festplatte zurückgewiesen, was bedeutet, dass Batch-Datei-APIs nicht auf diese Dateien zugreifen können.
containerSettings?: BatchTaskContainerSettings
Eigenschaftswert
environmentSettings
Eine Liste von Umgebungsvariablen-Einstellungen für die Aufgabe zur Jobvorbereitung.
environmentSettings?: EnvironmentSetting[]
Eigenschaftswert
id
Eine Zeichenkette, die die Aufgabe zur Jobvorbereitung innerhalb der Stelle eindeutig identifiziert. Die ID kann jede Kombination alphanumerischer Zeichen enthalten, einschließlich Bindestrichen und Unterstrichen, und darf nicht mehr als 64 Zeichen enthalten. Wenn Sie diese Eigenschaft nicht angeben, weist der Batch-Service den Standardwert 'Jobpreparation' zu. Keine andere Aufgabe im Job kann dieselbe ID wie die Aufgabe zur Jobvorbereitung haben. Wenn Sie versuchen, eine Aufgabe mit derselben ID einzureichen, lehnt der Batch-Service die Anfrage mit dem Fehlercode TaskIdSameAsJobPreparationTask ab; wenn du die REST-API direkt aufrufst, ist der HTTP-Statuscode 409 (Konflikt).
id?: string
Eigenschaftswert
string
rerunOnNodeRebootAfterSuccess
Ob der Batch-Service die Job Preparation Task nach einem Neustart eines Compute Nodes erneut ausführen sollte. Die Job Preparation Task wird immer erneut ausgeführt, wenn ein Compute Node neu gebildet wird oder wenn die Job Preparation Task nicht abgeschlossen wurde (z. B. weil der Neustart während der Ausführung der Aufgabe stattfand). Daher sollten Sie immer eine Jobvorbereitungsaufgabe schreiben, die idempotent ist und sich korrekt verhält, wenn sie mehrmals ausgeführt wird. Der Standardwert lautet „true“.
rerunOnNodeRebootAfterSuccess?: boolean
Eigenschaftswert
boolean
resourceFiles
Eine Liste der Dateien, die der Batchdienst vor dem Ausführen der Befehlszeile auf den Computeknoten herunterladen wird. Unter diesem Element aufgelistete Dateien befinden sich im Arbeitsverzeichnis der Aufgabe. Es gibt eine maximale Größe für die Liste der Ressourcendateien. Wenn die maximale Größe überschritten wird, schlägt die Anforderung fehl, und der Antwortfehlercode lautet "RequestEntityTooLarge". Wenn dies der Fall ist, muss die Sammlung von ResourceFiles in der Größe reduziert werden. Dies kann mithilfe von .zip Dateien, Anwendungspaketen oder Docker-Containern erreicht werden.
resourceFiles?: ResourceFile[]
Eigenschaftswert
userIdentity
Die Benutzeridentität, unter der die Aufgabe zur Jobvorbereitung ausgeführt wird. Wenn sie ausgelassen wird, läuft die Aufgabe als nicht-administrativer Benutzer, der einzigartig für die Aufgabe auf Windows Compute Nodes ist, oder als nicht-administrativer Benutzer, der einzigartig für den Pool auf Linux Compute Nodes ist.
userIdentity?: UserIdentity
Eigenschaftswert
waitForSuccess
Ob der Batch-Service warten sollte, bis die Jobvorbereitungs-Aufgabe erfolgreich abgeschlossen ist, bevor weitere Aufgaben des Jobs auf dem Rechenknoten geplant werden. Eine Aufgabe zur Jobvorbereitung ist erfolgreich abgeschlossen, wenn sie mit dem Ausgangscode 0 abgeschlossen wird. Wenn true und die Job Preparation Task an einem Knoten fehlschlägt, versucht der Batch-Service die Job Preparation Task bis zu ihrer maximalen Anzahl von Wiederholungen (wie im Constraints-Element angegeben) erneut. Wenn die Aufgabe nach allen erneuten Versuchen immer noch nicht erfolgreich abgeschlossen wurde, wird der Batch-Service die Aufgaben des Jobs nicht an den Node einplanen. Der Knoten bleibt aktiv und berechtigt, Aufgaben anderer Jobs auszuführen. Falls falsch, wartet der Batch-Service nicht auf Abschluss der Aufgabe zur Jobvorbereitung. In diesem Fall können andere Aufgaben des Jobs auf dem Rechenknoten ausgeführt werden, während die Aufgabe zur Jobvorbereitung noch läuft; und selbst wenn die Aufgabe zur Jobvorbereitung fehlschlägt, werden neue Aufgaben weiterhin auf dem Rechenknoten geplant. Der Standardwert lautet „true“.
waitForSuccess?: boolean
Eigenschaftswert
boolean