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 des Auftragsvorbereitungsvorgangs. Die Befehlszeile wird nicht unter einer Shell ausgeführt und kann daher nicht von Shellfeatures wie der Erweiterung der Umgebungsvariablen profitieren. Wenn Sie diese Features nutzen möchten, sollten Sie die Shell in der Befehlszeile aufrufen, z. B. mit "cmd /c MyCommand" in Windows oder "/bin/sh -c MyCommand" in 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 den Auftragsvorbereitungsvorgang gelten. |
| container |
Die Einstellungen für den Container, unter dem die Auftragsvorbereitungsaufgabe ausgeführt wird. Wenn dies angegeben wird, werden alle Verzeichnisse rekursiv unterhalb der AZ_BATCH_NODE_ROOT_DIR (der Stamm von Azure Batchverzeichnissen auf dem Knoten) dem Container zugeordnet, alle Taskumgebungsvariablen werden dem Container zugeordnet, und die Task-Befehlszeile wird im Container ausgeführt. Dateien, die im Container außerhalb von AZ_BATCH_NODE_ROOT_DIR erstellt wurden, werden möglicherweise nicht auf den Hostdatenträger wiedergegeben, was bedeutet, dass Batchdatei-APIs nicht auf diese Dateien zugreifen können. |
| environment |
Eine Liste der Umgebungsvariableneinstellungen für den Auftragsvorbereitungsvorgang. |
| id | Eine Zeichenfolge, die den Auftragsvorbereitungsvorgang innerhalb des Auftrags eindeutig identifiziert. Die ID kann eine beliebige Kombination aus alphanumerischen Zeichen einschließlich Bindestrichen und Unterstrichen enthalten und darf nicht mehr als 64 Zeichen enthalten. Wenn Sie diese Eigenschaft nicht angeben, weist der Batchdienst den Standardwert "jobpreparation" zu. Kein anderer Vorgang im Auftrag kann dieselbe ID wie der Vorgang zur Auftragsvorbereitung aufweisen. Wenn Sie versuchen, eine Aufgabe mit derselben ID zu senden, lehnt der Batchdienst die Anforderung mit dem Fehlercode TaskIdSameAsJobPreparationTask ab; Wenn Sie die REST-API direkt aufrufen, lautet der HTTP-Statuscode 409 (Conflict). |
| rerun |
Gibt an, ob der Batchdienst die Auftragsvorbereitungsaufgabe nach einem Neustart des Computeknotens erneut ausführen soll. Die Aufgabe zur Auftragsvorbereitung wird immer erneut ausgeführt, wenn ein Computeknoten neu abbildet oder die Auftragsvorbereitungsaufgabe nicht abgeschlossen wurde (z. B. weil der Neustart während der Ausführung der Aufgabe aufgetreten ist). Daher sollten Sie immer eine Auftragsvorbereitungsaufgabe schreiben, um idempotent zu sein und sich bei mehrfacher Ausführung ordnungsgemäß zu verhalten. Der Standardwert ist 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 Auftragsvorbereitungsaufgabe ausgeführt wird. Wenn dies nicht angegeben wird, wird die Aufgabe als nicht administrativer Benutzer ausgeführt, der für die Aufgabe unter Windows Compute Nodes eindeutig ist, oder ein nicht administrativer Benutzer, der für den Pool auf Linux-Computeknoten eindeutig ist. |
| wait |
Gibt an, ob der Batchdienst auf den Erfolgreichen Abschluss des Auftragsvorbereitungsvorgangs warten soll, bevor andere Aufgaben des Auftrags auf dem Computeknoten geplant werden. Eine Auftragsvorbereitungsaufgabe wurde erfolgreich abgeschlossen, wenn sie mit dem Beendigungscode 0 beendet wird. Wenn "true" und der Vorgang "Auftragsvorbereitung" auf einem Knoten fehlschlägt, wiederholt der Batchdienst den Auftragsvorbereitungsvorgang bis zur maximalen Wiederholungsanzahl (wie im Constraints-Element angegeben). Wenn der Vorgang nach allen Wiederholungen noch nicht erfolgreich abgeschlossen wurde, plant der Batchdienst keine Vorgänge des Auftrags an den Knoten. Der Knoten bleibt aktiv und berechtigt, Aufgaben anderer Aufträge auszuführen. Wenn "false" lautet, wartet der Batchdienst nicht auf den Abschluss des Auftragsvorbereitungsvorgangs. In diesem Fall können andere Aufgaben des Auftrags mit der Ausführung auf dem Computeknoten beginnen, während die Auftragsvorbereitungsaufgabe noch ausgeführt wird. und auch wenn der Auftragsvorbereitungsvorgang fehlschlägt, werden neue Vorgänge weiterhin auf dem Computeknoten geplant. Der Standardwert ist true. |
Details zur Eigenschaft
commandLine
Die Befehlszeile des Auftragsvorbereitungsvorgangs. Die Befehlszeile wird nicht unter einer Shell ausgeführt und kann daher nicht von Shellfeatures wie der Erweiterung der Umgebungsvariablen profitieren. Wenn Sie diese Features nutzen möchten, sollten Sie die Shell in der Befehlszeile aufrufen, z. B. mit "cmd /c MyCommand" in Windows oder "/bin/sh -c MyCommand" in 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 den Auftragsvorbereitungsvorgang gelten.
constraints?: BatchTaskConstraints
Eigenschaftswert
containerSettings
Die Einstellungen für den Container, unter dem die Auftragsvorbereitungsaufgabe ausgeführt wird. Wenn dies angegeben wird, werden alle Verzeichnisse rekursiv unterhalb der AZ_BATCH_NODE_ROOT_DIR (der Stamm von Azure Batchverzeichnissen auf dem Knoten) dem Container zugeordnet, alle Taskumgebungsvariablen werden dem Container zugeordnet, und die Task-Befehlszeile wird im Container ausgeführt. Dateien, die im Container außerhalb von AZ_BATCH_NODE_ROOT_DIR erstellt wurden, werden möglicherweise nicht auf den Hostdatenträger wiedergegeben, was bedeutet, dass Batchdatei-APIs nicht auf diese Dateien zugreifen können.
containerSettings?: BatchTaskContainerSettings
Eigenschaftswert
environmentSettings
Eine Liste der Umgebungsvariableneinstellungen für den Auftragsvorbereitungsvorgang.
environmentSettings?: EnvironmentSetting[]
Eigenschaftswert
id
Eine Zeichenfolge, die den Auftragsvorbereitungsvorgang innerhalb des Auftrags eindeutig identifiziert. Die ID kann eine beliebige Kombination aus alphanumerischen Zeichen einschließlich Bindestrichen und Unterstrichen enthalten und darf nicht mehr als 64 Zeichen enthalten. Wenn Sie diese Eigenschaft nicht angeben, weist der Batchdienst den Standardwert "jobpreparation" zu. Kein anderer Vorgang im Auftrag kann dieselbe ID wie der Vorgang zur Auftragsvorbereitung aufweisen. Wenn Sie versuchen, eine Aufgabe mit derselben ID zu senden, lehnt der Batchdienst die Anforderung mit dem Fehlercode TaskIdSameAsJobPreparationTask ab; Wenn Sie die REST-API direkt aufrufen, lautet der HTTP-Statuscode 409 (Conflict).
id?: string
Eigenschaftswert
string
rerunOnNodeRebootAfterSuccess
Gibt an, ob der Batchdienst die Auftragsvorbereitungsaufgabe nach einem Neustart des Computeknotens erneut ausführen soll. Die Aufgabe zur Auftragsvorbereitung wird immer erneut ausgeführt, wenn ein Computeknoten neu abbildet oder die Auftragsvorbereitungsaufgabe nicht abgeschlossen wurde (z. B. weil der Neustart während der Ausführung der Aufgabe aufgetreten ist). Daher sollten Sie immer eine Auftragsvorbereitungsaufgabe schreiben, um idempotent zu sein und sich bei mehrfacher Ausführung ordnungsgemäß zu verhalten. Der Standardwert ist 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 Auftragsvorbereitungsaufgabe ausgeführt wird. Wenn dies nicht angegeben wird, wird die Aufgabe als nicht administrativer Benutzer ausgeführt, der für die Aufgabe unter Windows Compute Nodes eindeutig ist, oder ein nicht administrativer Benutzer, der für den Pool auf Linux-Computeknoten eindeutig ist.
userIdentity?: UserIdentity
Eigenschaftswert
waitForSuccess
Gibt an, ob der Batchdienst auf den Erfolgreichen Abschluss des Auftragsvorbereitungsvorgangs warten soll, bevor andere Aufgaben des Auftrags auf dem Computeknoten geplant werden. Eine Auftragsvorbereitungsaufgabe wurde erfolgreich abgeschlossen, wenn sie mit dem Beendigungscode 0 beendet wird. Wenn "true" und der Vorgang "Auftragsvorbereitung" auf einem Knoten fehlschlägt, wiederholt der Batchdienst den Auftragsvorbereitungsvorgang bis zur maximalen Wiederholungsanzahl (wie im Constraints-Element angegeben). Wenn der Vorgang nach allen Wiederholungen noch nicht erfolgreich abgeschlossen wurde, plant der Batchdienst keine Vorgänge des Auftrags an den Knoten. Der Knoten bleibt aktiv und berechtigt, Aufgaben anderer Aufträge auszuführen. Wenn "false" lautet, wartet der Batchdienst nicht auf den Abschluss des Auftragsvorbereitungsvorgangs. In diesem Fall können andere Aufgaben des Auftrags mit der Ausführung auf dem Computeknoten beginnen, während die Auftragsvorbereitungsaufgabe noch ausgeführt wird. und auch wenn der Auftragsvorbereitungsvorgang fehlschlägt, werden neue Vorgänge weiterhin auf dem Computeknoten geplant. Der Standardwert ist true.
waitForSuccess?: boolean
Eigenschaftswert
boolean