JobManagerTask Klasse
Gibt Details zu einem Auftrags-Manager-Task an.
Der Auftrags-Manager-Task wird automatisch gestartet, wenn der Auftrag erstellt wird. Der Batch-Dienst versucht, den Auftrags-Manager-Task vor allen anderen Aufgaben im Auftrag zu planen. Beim Verkleinern eines Pools versucht der Batch-Dienst, Knoten beizubehalten, auf denen Job Manager-Aufgaben so lange wie möglich ausgeführt werden (d. a. Computeknoten, auf denen "normale" Tasks ausgeführt werden, werden entfernt, bevor Computeknoten Job Manager-Aufgaben ausführen). Wenn ein Auftrags-Manager-Task fehlschlägt und neu gestartet werden muss, versucht das System, ihn mit der höchsten Priorität zu planen. Wenn keine Computeknoten im Leerlauf verfügbar sind, kann das System eine der ausgeführten Tasks im Pool beenden und an die Warteschlange zurückgeben, um Platz für den Neustart des Auftrags-Manager-Tasks zu schaffen. Beachten Sie, dass ein Auftrags-Manager-Task in einem Auftrag keine Priorität gegenüber Vorgängen in anderen Aufträgen hat. Bei allen Aufträgen werden nur Prioritäten auf Auftragsebene beachtet. Wenn beispielsweise ein Auftrags-Manager in einem Auftrag der Priorität 0 neu gestartet werden muss, verdrängt er keine Aufgaben mit einem Auftrag mit Priorität 1. Batch wiederholt Tasks, 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 aufgrund eines Wiederherstellungsvorgangs eine interne Wiederholung erfolgen. Aus diesem Gründen sollten alle Tasks 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.
Alle erforderlichen Parameter müssen aufgefüllt werden, um an Azure senden zu können.
- Vererbung
-
JobManagerTask
Konstruktor
JobManagerTask(*, id: str, command_line: str, display_name: str = None, container_settings=None, resource_files=None, output_files=None, environment_settings=None, constraints=None, required_slots: int = None, kill_job_on_completion: bool = None, user_identity=None, run_exclusive: bool = None, application_package_references=None, authentication_token_settings=None, allow_low_priority_node: bool = None, **kwargs)
Parameter
- id
- str
Erforderlich. Die ID kann eine beliebige Kombination alphanumerischer Zeichen enthalten, einschließlich Bindestrichen und Unterstrichen, und darf nicht mehr als 64 Zeichen enthalten.
- display_name
- str
Sie muss nicht eindeutig sein und kann unicode-Zeichen bis zu einer maximalen Länge von 1024 enthalten.
- 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 mit "/bin/sh -c MyCommand" unter Linux. Wenn die Befehlszeile auf Dateipfade verweist, sollte sie einen relativen Pfad (relativ zum Arbeitsverzeichnis Task) verwenden 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 Auftrags-Manager-Task ausgeführt wird. Wenn für den Pool, der diesen Task ausführen soll, containerConfiguration festgelegt ist, muss auch dies festgelegt werden. Wenn für den Pool, der diesen Task ausführen soll, containerConfiguration nicht festgelegt ist, darf dies nicht festgelegt werden. Wenn dies angegeben ist, werden alle Verzeichnisse, die sich rekursiv unterhalb des AZ_BATCH_NODE_ROOT_DIR befinden (der Stamm der Azure Batch Verzeichnisse auf dem Knoten) dem Container zugeordnet, alle Umgebungsvariablen der Aufgabe 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 werden, werden möglicherweise nicht auf dem Hostdatenträger angezeigt, was bedeutet, dass Batch-Datei-APIs nicht auf diese Dateien zugreifen können.
- resource_files
- list[ResourceFile]
Die unter diesem Element aufgeführten Dateien 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 Auflistung von ResourceFiles verkleinert werden. Dies kann mit .zip-Dateien, Anwendungspaketen oder Docker-Containern erreicht werden.
- output_files
- list[OutputFile]
Bei Aufgaben mit mehreren instance werden die Dateien nur aus dem Computeknoten hochgeladen, auf dem der primäre Task ausgeführt wird.
- environment_settings
- list[EnvironmentSetting]
- required_slots
- int
Die Anzahl der Planungsslots, die der Task zum Ausführen benötigt. Der Standardwert ist 1. Eine Aufgabe kann nur für die Ausführung auf einem Computeknoten geplant werden, wenn der Knoten über genügend freie Planungsslots verfügt. Für Aufgaben mit mehreren instance wird diese Eigenschaft nicht unterstützt und darf nicht angegeben werden.
- kill_job_on_completion
- bool
Gibt an, ob der Abschluss des Auftrags-Manager-Tasks den Abschluss des gesamten Auftrags bedeutet. Wenn true, markiert der Batch-Dienst den Auftrag als abgeschlossen, wenn der Auftrags-Manager-Task abgeschlossen ist. Wenn Aufgaben zu diesem Zeitpunkt noch ausgeführt werden (mit Ausnahme der Auftragsfreigabe), werden diese Aufgaben beendet. Wenn false, wirkt sich die Vervollständigung des Auftrags-Manager-Tasks nicht auf den status Auftrag aus. In diesem Fall sollten Sie entweder das onAllTasksComplete-Attribut verwenden, um den Auftrag zu beenden, oder ein Client oder Benutzer sollte den Auftrag explizit beenden. Ein Beispiel hierfür ist, wenn der Auftrags-Manager eine Reihe von Aufgaben erstellt, dann aber keine weitere Rolle bei der Ausführung übernimmt. Der Standardwert lautet „true“. Wenn Sie die Attribute onAllTasksComplete und onTaskFailure verwenden, um die Lebensdauer des Auftrags zu steuern, und die Auftrags-Manager-Aufgabe nur zum Erstellen der Aufgaben für den Auftrag verwenden (nicht zum Überwachen des Status), ist es wichtig, killJobOnCompletion auf false festzulegen.
- user_identity
- UserIdentity
Die Benutzeridentität, unter der der Auftrags-Manager-Task ausgeführt wird. Wenn er nicht angegeben wird, wird der Task als nicht administrativer Benutzer ausgeführt, der für den Task eindeutig ist.
- run_exclusive
- bool
Gibt an, ob der Job Manager-Task die exklusive Verwendung des Computeknotens erfordert, in dem er ausgeführt wird. Wenn true, werden keine anderen Tasks auf demselben Knoten ausgeführt, solange der Auftrags-Manager ausgeführt wird. Wenn false, können andere Aufgaben gleichzeitig mit dem Auftrags-Manager auf einem Computeknoten ausgeführt werden. Der Auftrags-Manager-Task zählt normalerweise mit dem Gleichzeitigen Vorgangslimit des Computeknotens, sodass dies nur relevant ist, wenn der Computeknoten mehrere gleichzeitige Tasks zulässt. Der Standardwert lautet „true“.
- application_package_references
- list[ApplicationPackageReference]
Anwendungspakete werden heruntergeladen und in einem freigegebenen Verzeichnis bereitgestellt, nicht im Arbeitsverzeichnis Task. Wenn sich ein Anwendungspaket, auf das verwiesen wird, bereits auf dem Computeknoten befindet und auf dem neuesten Stand ist, wird es daher nicht erneut heruntergeladen. Die vorhandene Kopie auf dem Computeknoten wird verwendet. Wenn ein Anwendungspaket, auf das verwiesen wird, nicht installiert werden kann, z. B. weil das Paket gelöscht wurde oder der Download fehlgeschlagen ist, schlägt der Task fehl.
- authentication_token_settings
- AuthenticationTokenSettings
Die Einstellungen für ein Authentifizierungstoken, das der Task zum Ausführen von Batch-Dienstvorgängen verwenden kann. Wenn diese Eigenschaft festgelegt ist, stellt der Batch-Dienst der Aufgabe ein Authentifizierungstoken bereit, das zum Authentifizieren von Batch-Dienstvorgängen verwendet werden kann, ohne dass ein Kontozugriffsschlüssel erforderlich ist. Das Token wird über die AZ_BATCH_AUTHENTICATION_TOKEN Umgebungsvariable bereitgestellt. Die Vorgänge, die der Task mit dem Token ausführen kann, hängen von den Einstellungen ab. Beispielsweise kann ein Task Auftragsberechtigungen anfordern, um dem Auftrag weitere Aufgaben hinzuzufügen, oder die status des Auftrags oder anderer Aufgaben unter dem Auftrag überprüfen.
- allow_low_priority_node
- bool
Gibt an, ob der Job Manager-Task auf einem Computeknoten mit spot/low-priority ausgeführt werden kann. 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 Dict 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 hierarchisches Ergebnisdikt betrachtet. Sehen Sie sich die drei Beispiele in dieser Datei an:
Wenn Sie die 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 eine 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 Dict 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 hierarchisches Ergebnisdikt betrachtet.
Sehen Sie sich die drei Beispiele in dieser Datei an:
attribute_transformer
full_restapi_key_transformer
last_restapi_key_transformer
Wenn Sie die 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üsseltransformerfunktion.
- keep_readonly
Gibt zurück
Ein JSON-kompatibles Objekt mit Dict
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 eine 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 mit Validierungsfehlern
Rückgabetyp
Azure SDK for Python