JobPreparationTask Klasse
Ein Auftragsvorbereitungstask, der vor allen Aufgaben des Auftrags auf einem beliebigen Computeknoten ausgeführt werden soll.
Sie können die Auftragsvorbereitung verwenden, um einen Knoten für die Ausführung von Aufgaben für den Auftrag vorzubereiten. Zu den aktivitäten, die häufig in der Auftragsvorbereitung ausgeführt werden, gehören: Herunterladen allgemeiner Ressourcendateien, die von allen Aufgaben im Auftrag verwendet werden. Der Auftragsvorbereitungstask kann diese allgemeinen Ressourcendateien an den freigegebenen Speicherort auf dem Knoten herunterladen. (AZ_BATCH_NODE_ROOT_DIRshared) oder einen lokalen Dienst auf dem Knoten starten, damit alle Aufgaben dieses Auftrags mit diesem kommunizieren können. Wenn der Auftragsvorbereitungstask fehlschlägt (d. h. die Wiederholungsanzahl erschöpft, bevor er mit Exitcode 0 beendet wird), führt Batch keine Tasks dieses Auftrags auf dem Knoten aus. Der Computeknoten kann Aufgaben dieses Auftrags nicht ausführen, bis er neu erstellt wird. Der Computeknoten bleibt aktiv und kann für andere Aufträge verwendet werden. Der Auftragsvorbereitungstask kann mehrmals auf demselben Knoten ausgeführt werden. Daher sollten Sie den Auftragsvorbereitungstask schreiben, um die erneute Ausführung zu behandeln. Wenn der Knoten neu gestartet wird, wird der Auftragsvorbereitungstask erneut auf dem Computeknoten ausgeführt, bevor eine andere Aufgabe des Auftrags geplant wird, wenn rerunOnNodeRebootAfterSuccess true ist oder wenn der Auftragsvorbereitungstask zuvor nicht abgeschlossen wurde. Wenn der Knoten neu erstellt wird, wird der Auftragsvorbereitungstask 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 auf), wenn ein fehlerhafter Knoten neu gestartet wird oder ein Computeknoten aufgrund eines Hostfehlers verschwunden ist. Wiederholungsversuche aufgrund von Wiederherstellungsvorgängen sind unabhängig von und werden nicht mit maxTaskRetryCount gezählt. Auch wenn maxTaskRetryCount 0 ist, kann es aufgrund eines Wiederherstellungsvorgangs zu einer internen Wiederholung kommen. Aus diesem Gründen sollten alle Aufgaben idempotent sein. Dies bedeutet, dass Tasks es tolerieren müssen, dass sie unterbrochen und neu gestartet werden, ohne dass es zu Beschädigungen oder doppelten Daten kommt. Die bewährte Methode für Aufgaben mit langer Ausführungsdauer besteht darin, eine Form von Prüfpunkten zu verwenden.
Zum Senden an Azure müssen alle erforderlichen Parameter aufgefüllt werden.
- Vererbung
-
JobPreparationTask
Konstruktor
JobPreparationTask(*, command_line: str, id: str = None, container_settings=None, resource_files=None, environment_settings=None, constraints=None, wait_for_success: bool = None, user_identity=None, rerun_on_node_reboot_after_success: bool = None, **kwargs)
Parameter
- id
- str
Die ID kann eine beliebige Kombination von alphanumerischen Zeichen einschließlich Bindestrichen und Unterstrichen enthalten und darf nicht mehr als 64 Zeichen enthalten. Wenn Sie diese Eigenschaft nicht angeben, weist der Batch-Dienst den Standardwert "jobpreparation" zu. Keine andere Aufgabe im Auftrag kann dieselbe ID wie die Auftragsvorbereitungsaufgabe aufweisen. Wenn Sie versuchen, einen Task mit derselben ID zu übermitteln, lehnt der Batch-Dienst die Anforderung mit dem Fehlercode TaskIdSameAsJobPreparationTask ab. Wenn Sie die REST-API direkt aufrufen, lautet der HTTP-status Code 409 (Konflikt).
- command_line
- str
Erforderlich. Die Befehlszeile wird nicht unter einer Shell ausgeführt und kann daher keine Shellfeatures wie die Erweiterung von Umgebungsvariablen nutzen. Wenn Sie solche 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" unter Linux. Wenn die Befehlszeile auf Dateipfade verweist, sollte sie einen relativen Pfad (relativ zum Arbeitsverzeichnis Task) oder die von Batch bereitgestellte Umgebungsvariable (https://docs.microsoft.com/en-us/azure/batch/batch-compute-node-environment-variables) verwenden.
- container_settings
- TaskContainerSettings
Die Einstellungen für den Container, unter dem der Auftragsvorbereitungstask ausgeführt wird. Wenn dies angegeben ist, werden alle Verzeichnisse rekursiv unterhalb der AZ_BATCH_NODE_ROOT_DIR (dem Stammverzeichnis der Azure Batch Verzeichnisse auf dem Knoten) dem Container zugeordnet, alle Taskumgebungsvariablen werden dem Container zugeordnet, und die Taskbefehlszeile wird im Container ausgeführt. Dateien, die im Container außerhalb von AZ_BATCH_NODE_ROOT_DIR erstellt werden, werden möglicherweise nicht auf den Hostdatenträger wiedergegeben, was bedeutet, dass Batch-Datei-APIs nicht auf diese Dateien zugreifen können.
- resource_files
- list[ResourceFile]
Dateien, die unter diesem Element aufgeführt sind, befinden sich im Arbeitsverzeichnis des Tasks. 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. In diesem Fall muss die Sammlung von ResourceFiles verkleinert werden. Dies kann mithilfe von .zip-Dateien, Anwendungspaketen oder Docker-Containern erreicht werden.
- environment_settings
- list[EnvironmentSetting]
- constraints
- TaskConstraints
Einschränkungen, die für den Auftragsvorbereitungstask gelten.
- wait_for_success
- bool
Gibt an, ob der Batch-Dienst auf den erfolgreichen Abschluss des Auftragsvorbereitungstask warten soll, bevor andere Aufgaben des Auftrags auf dem Computeknoten geplant werden. Ein Auftragsvorbereitungstask wurde erfolgreich abgeschlossen, wenn er mit dem Exitcode 0 beendet wird. Wenn true und der Auftragsvorbereitungstask auf einem Knoten fehlschlägt, führt der Batch-Dienst den Auftragsvorbereitungstask bis zu seiner maximalen Wiederholungsanzahl (wie im constraints-Element angegeben) erneut aus. Wenn die Aufgabe nach allen Wiederholungen immer noch nicht erfolgreich abgeschlossen wurde, plant der Batch-Dienst keine Aufgaben des Auftrags auf dem Knoten. Der Knoten bleibt aktiv und kann Aufgaben anderer Aufträge ausführen. Bei "false" wartet der Batch-Dienst nicht auf den Abschluss des Auftragsvorbereitungstask. In diesem Fall können andere Aufgaben des Auftrags mit der Ausführung auf dem Computeknoten beginnen, während der Task zur Auftragsvorbereitung noch ausgeführt wird. Und selbst wenn der Auftragsvorbereitungstask fehlschlägt, werden neue Aufgaben weiterhin auf dem Computeknoten geplant. Der Standardwert lautet „true“.
- user_identity
- UserIdentity
Die Benutzeridentität, unter der der Auftragsvorbereitungstask ausgeführt wird. Wenn diese Angabe ausgelassen wird, wird der Task als nicht administrativer Benutzer ausgeführt, der für die Aufgabe auf Windows-Computeknoten eindeutig ist, oder als nicht administrativer Benutzer, der für den Pool auf Linux-Computeknoten eindeutig ist.
- rerun_on_node_reboot_after_success
- bool
Gibt an, ob der Batch-Dienst den Auftragsvorbereitungstask nach dem Neustart eines Computeknotens erneut ausführen soll. Der Auftragsvorbereitungstask wird immer dann erneut ausgeführt, wenn ein Computeknoten ein erneutes Image erstellt wird oder wenn der Auftragsvorbereitungstask nicht abgeschlossen wurde (z. B. weil der Neustart während der Ausführung des Tasks erfolgte). Daher sollten Sie einen Auftragsvorbereitungstask immer so schreiben, dass er idempotent ist und sich bei mehrfacher Ausführung ordnungsgemäß verhält. Der Standardwert lautet „true“.
Methoden
as_dict |
Gibt ein Dict zurück, das mit json.dump JSONify sein kann. Bei erweiterter Verwendung kann optional ein Rückruf als Parameter verwendet werden: Key ist der Attributname, der in Python verwendet wird. Attr_desc ist ein Diktat von Metadaten. Enthält derzeit "type" mit dem Msrest-Typ und "key" mit dem RestAPI-codierten Schlüssel. Value ist der aktuelle Wert in diesem Objekt. Die zurückgegebene Zeichenfolge wird verwendet, um den Schlüssel zu serialisieren. Wenn der Rückgabetyp eine Liste ist, wird dies als hierarchische Ergebnisdikt betrachtet. Sehen Sie sich die drei Beispiele in dieser Datei an:
Wenn Sie eine XML-Serialisierung wünschen, können Sie die kwargs is_xml=True übergeben. |
deserialize |
Analysieren Sie eine str mithilfe der RestAPI-Syntax, und geben Sie ein Modell zurück. |
enable_additional_properties_sending | |
from_dict |
Analysieren eines Diktats mit dem angegebenen Schlüsselextraktor gibt ein Modell zurück. Berücksichtigen Sie standardmäßig Schlüsselextraktoren (rest_key_case_insensitive_extractor, attribute_key_case_insensitive_extractor und last_rest_key_case_insensitive_extractor) |
is_xml_model | |
serialize |
Gibt den JSON-Code zurück, der von diesem Modell an Azure gesendet wird. Dies ist ein Alias für as_dict(full_restapi_key_transformer, keep_readonly=False). Wenn Sie die XML-Serialisierung wünschen, können Sie die kwargs is_xml=True übergeben. |
validate |
Überprüfen Sie dieses Modell rekursiv, und geben Sie eine Liste von ValidationError zurück. |
as_dict
Gibt ein Dict zurück, das mit json.dump JSONify sein kann.
Bei erweiterter Verwendung kann optional ein Rückruf als Parameter verwendet werden:
Key ist der Attributname, der in Python verwendet wird. Attr_desc ist ein Diktat von Metadaten. Enthält derzeit "type" mit dem Msrest-Typ und "key" mit dem RestAPI-codierten Schlüssel. Value ist der aktuelle Wert in diesem Objekt.
Die zurückgegebene Zeichenfolge wird verwendet, um den Schlüssel zu serialisieren. Wenn der Rückgabetyp eine Liste ist, wird dies als hierarchische Ergebnisdikt betrachtet.
Sehen Sie sich die drei Beispiele in dieser Datei an:
attribute_transformer
full_restapi_key_transformer
last_restapi_key_transformer
Wenn Sie eine XML-Serialisierung wünschen, können Sie die kwargs is_xml=True übergeben.
as_dict(keep_readonly=True, key_transformer=<function attribute_transformer>, **kwargs)
Parameter
- key_transformer
- <xref:function>
Eine Schlüsseltransformatorfunktion.
- keep_readonly
Gibt zurück
Ein JSON-kompatibles Diktatobjekt
Rückgabetyp
deserialize
Analysieren Sie eine str mithilfe der RestAPI-Syntax, und geben Sie ein Modell zurück.
deserialize(data, content_type=None)
Parameter
Gibt zurück
Eine instance dieses Modells
Ausnahmen
enable_additional_properties_sending
enable_additional_properties_sending()
from_dict
Analysieren eines Diktats mit dem angegebenen Schlüsselextraktor gibt ein Modell zurück.
Berücksichtigen Sie standardmäßig Schlüsselextraktoren (rest_key_case_insensitive_extractor, attribute_key_case_insensitive_extractor und last_rest_key_case_insensitive_extractor)
from_dict(data, key_extractors=None, content_type=None)
Parameter
- key_extractors
Gibt zurück
Eine instance dieses Modells
Ausnahmen
is_xml_model
is_xml_model()
serialize
Gibt den JSON-Code zurück, der von diesem Modell an Azure gesendet wird.
Dies ist ein Alias für as_dict(full_restapi_key_transformer, keep_readonly=False).
Wenn Sie die XML-Serialisierung wünschen, können Sie die kwargs is_xml=True übergeben.
serialize(keep_readonly=False, **kwargs)
Parameter
- keep_readonly
- bool
Wenn Sie die schreibgeschützten Attribute serialisieren möchten
Gibt zurück
Ein JSON-kompatibles Diktatobjekt
Rückgabetyp
validate
Überprüfen Sie dieses Modell rekursiv, und geben Sie eine Liste von ValidationError zurück.
validate()
Gibt zurück
Eine Liste von Überprüfungsfehlern
Rückgabetyp
Azure SDK for Python