Partager via


JobPreparationTask Classe

Tâche de préparation du travail à exécuter avant toute tâche du travail sur un nœud de calcul donné.

Vous pouvez utiliser la préparation du travail pour préparer un nœud afin d’exécuter des tâches pour le travail. Les activités couramment effectuées dans la préparation du travail incluent : Téléchargement des fichiers de ressources communs utilisés par toutes les tâches du travail. La tâche de préparation du travail peut télécharger ces fichiers de ressources communs à l’emplacement partagé sur le nœud. (AZ_BATCH_NODE_ROOT_DIRshared), ou le démarrage d’un service local sur le nœud afin que toutes les tâches de ce travail puissent communiquer avec celui-ci. Si la tâche de préparation du travail échoue (autrement dit, épuise son nombre de nouvelles tentatives avant de quitter avec le code de sortie 0), Batch n’exécute pas les tâches de ce travail sur le nœud. Le nœud de calcul reste inéligible pour exécuter les tâches de ce travail tant qu’il n’est pas réinitialiser. Le nœud de calcul reste actif et peut être utilisé pour d’autres travaux. La tâche de préparation du travail peut s’exécuter plusieurs fois sur le même nœud. Par conséquent, vous devez écrire la tâche de préparation du travail pour gérer la ré-exécution. Si le nœud est redémarré, la tâche de préparation du travail est réexécutée sur le nœud de calcul avant de planifier une autre tâche du travail, si rerunOnNodeRebootAfterSuccess a la valeur true ou si la tâche de préparation du travail n’a pas été effectuée précédemment. Si le nœud est réinitialisée, la tâche de préparation du travail est réexécutée avant de planifier une tâche du travail. Batch effectue une nouvelle tentative de tâches lorsqu’une opération de récupération est déclenchée sur un nœud. Les exemples d’opérations de récupération incluent (mais ne sont pas limités à) lorsqu’un nœud non sain est redémarré ou qu’un nœud de calcul a disparu en raison d’une défaillance de l’hôte. Les nouvelles tentatives dues aux opérations de récupération sont indépendantes de et ne sont pas comptabilisées dans maxTaskRetryCount. Même si maxTaskRetryCount est 0, une nouvelle tentative interne en raison d’une opération de récupération peut se produire. Pour cette raison, toutes les tâches doivent être idempotentes. Cela signifie que les tâches doivent tolérer l’interruption et le redémarrage sans provoquer d’altération ou de doublon des données. La meilleure pratique pour les tâches de longue durée consiste à utiliser une forme de point de contrôle.

Tous les paramètres requis doivent être renseignés pour pouvoir être envoyés à Azure.

Héritage
JobPreparationTask

Constructeur

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)

Paramètres

id
str
Obligatoire

L’ID peut contenir n’importe quelle combinaison de caractères alphanumériques, y compris des traits d’union et des traits de soulignement, et ne peut pas contenir plus de 64 caractères. Si vous ne spécifiez pas cette propriété, le service Batch attribue une valeur par défaut « jobpreparation ». Aucune autre tâche du travail ne peut avoir le même ID que la tâche de préparation du travail. Si vous essayez d’envoyer une tâche avec le même ID, le service Batch rejette la demande avec le code d’erreur TaskIdSameAsJobPreparationTask ; si vous appelez l’API REST directement, le code http status est 409 (Conflit).

command_line
str
Obligatoire

Obligatoire. La ligne de commande ne s’exécute pas sous un interpréteur de commandes et ne peut donc pas tirer parti des fonctionnalités de l’interpréteur de commandes, telles que l’expansion des variables d’environnement. Si vous souhaitez tirer parti de ces fonctionnalités, vous devez appeler l’interpréteur de commandes dans la ligne de commande, par exemple en utilisant « cmd /c MyCommand » dans Windows ou « /bin/sh -c MyCommand » dans Linux. Si la ligne de commande fait référence à des chemins d’accès de fichiers, elle doit utiliser un chemin relatif (par rapport au répertoire de travail De la tâche) ou utiliser la variable d’environnement fournie par Batch (https://docs.microsoft.com/en-us/azure/batch/batch-compute-node-environment-variables).

container_settings
TaskContainerSettings
Obligatoire

Paramètres du conteneur sous lequel la tâche de préparation du travail s’exécute. Lorsque cela est spécifié, tous les répertoires récursifs sous le AZ_BATCH_NODE_ROOT_DIR (la racine de Azure Batch répertoires sur le nœud) sont mappés dans le conteneur, toutes les variables d’environnement de tâche sont mappées dans le conteneur et la ligne de commande Task est exécutée dans le conteneur. Les fichiers produits dans le conteneur en dehors de AZ_BATCH_NODE_ROOT_DIR peuvent ne pas être répercutés sur le disque hôte, ce qui signifie que les API de fichier Batch ne pourront pas accéder à ces fichiers.

resource_files
list[ResourceFile]
Obligatoire

Les fichiers répertoriés sous cet élément se trouvent dans le répertoire de travail de la tâche. Il existe une taille maximale pour la liste des fichiers de ressources. Lorsque la taille maximale est dépassée, la demande échoue et le code d’erreur de réponse est RequestEntityTooLarge. Si cela se produit, la taille de la collection resourceFiles doit être réduite. Pour ce faire, vous pouvez utiliser des fichiers .zip, des packages d’application ou des conteneurs Docker.

environment_settings
list[EnvironmentSetting]
Obligatoire
constraints
TaskConstraints
Obligatoire

Contraintes qui s’appliquent à la tâche de préparation du travail.

wait_for_success
bool
Obligatoire

Indique si le service Batch doit attendre que la tâche de préparation du travail se termine correctement avant de planifier d’autres tâches du travail sur le nœud de calcul. Une tâche de préparation du travail s’est terminée correctement si elle se termine avec le code de sortie 0. Si true et que la tâche de préparation du travail échoue sur un nœud, le service Batch retente la tâche de préparation du travail jusqu’à son nombre maximal de nouvelles tentatives (comme spécifié dans l’élément contraintes). Si la tâche n’est toujours pas terminée après toutes les nouvelles tentatives, le service Batch ne planifie pas les tâches du travail sur le nœud. Le nœud reste actif et éligible pour exécuter les tâches d’autres travaux. Si la valeur est false, le service Batch n’attend pas la fin de la tâche de préparation du travail. Dans ce cas, les autres tâches du travail peuvent commencer à s’exécuter sur le nœud de calcul pendant que la tâche de préparation du travail est toujours en cours d’exécution ; et même si la tâche de préparation du travail échoue, les nouvelles tâches continueront d’être planifiées sur le nœud de calcul. La valeur par défaut est true.

user_identity
UserIdentity
Obligatoire

Identité utilisateur sous laquelle la tâche de préparation du travail s’exécute. En cas d’omission, la tâche s’exécute en tant qu’utilisateur non administratif unique à la tâche sur les nœuds de calcul Windows, ou en tant qu’utilisateur non administratif unique au pool sur les nœuds de calcul Linux.

rerun_on_node_reboot_after_success
bool
Obligatoire

Indique si le service Batch doit réexécuter la tâche de préparation du travail après le redémarrage d’un nœud de calcul. La tâche de préparation du travail est toujours réexécutée si un nœud de calcul est réimagené ou si la tâche de préparation du travail n’est pas terminée (par exemple, parce que le redémarrage s’est produit pendant l’exécution de la tâche). Par conséquent, vous devez toujours écrire une tâche de préparation de travail pour qu’elle soit idempotente et qu’elle se comporte correctement si elle est exécutée plusieurs fois. La valeur par défaut est true.

Méthodes

as_dict

Retourne un dict qui peut être JSONify à l’aide de json.dump.

L’utilisation avancée peut éventuellement utiliser un rappel comme paramètre :

La clé est le nom d’attribut utilisé dans Python. Attr_desc est une dictée de métadonnées. Contient actuellement « type » avec le type msrest et « key » avec la clé encodée RestAPI. Value est la valeur actuelle de cet objet.

La chaîne retournée sera utilisée pour sérialiser la clé. Si le type de retour est une liste, il est considéré comme un dict de résultat hiérarchique.

Consultez les trois exemples de ce fichier :

  • attribute_transformer

  • full_restapi_key_transformer

  • last_restapi_key_transformer

Si vous souhaitez la sérialisation XML, vous pouvez passer les kwargs is_xml=True.

deserialize

Analysez une str à l’aide de la syntaxe RestAPI et retournez un modèle.

enable_additional_properties_sending
from_dict

Analyser une dict à l’aide de l’extracteur de clé donné retourne un modèle.

Par défaut, considérez les extracteurs de clés (rest_key_case_insensitive_extractor, attribute_key_case_insensitive_extractor et last_rest_key_case_insensitive_extractor)

is_xml_model
serialize

Retourne le json qui serait envoyé à Azure à partir de ce modèle.

Il s’agit d’un alias pour as_dict(full_restapi_key_transformer, keep_readonly=False).

Si vous souhaitez une sérialisation XML, vous pouvez passer les kwargs is_xml=True.

validate

Validez ce modèle de manière récursive et retournez une liste de ValidationError.

as_dict

Retourne un dict qui peut être JSONify à l’aide de json.dump.

L’utilisation avancée peut éventuellement utiliser un rappel comme paramètre :

La clé est le nom d’attribut utilisé dans Python. Attr_desc est une dictée de métadonnées. Contient actuellement « type » avec le type msrest et « key » avec la clé encodée RestAPI. Value est la valeur actuelle de cet objet.

La chaîne retournée sera utilisée pour sérialiser la clé. Si le type de retour est une liste, il est considéré comme un dict de résultat hiérarchique.

Consultez les trois exemples de ce fichier :

  • attribute_transformer

  • full_restapi_key_transformer

  • last_restapi_key_transformer

Si vous souhaitez la sérialisation XML, vous pouvez passer les kwargs is_xml=True.

as_dict(keep_readonly=True, key_transformer=<function attribute_transformer>, **kwargs)

Paramètres

key_transformer
<xref:function>

Fonction de transformateur de clé.

keep_readonly
valeur par défaut: True

Retours

Objet compatible JSON dict

Type de retour

deserialize

Analysez une str à l’aide de la syntaxe RestAPI et retournez un modèle.

deserialize(data, content_type=None)

Paramètres

data
str
Obligatoire

Str utilisant la structure RestAPI. JSON par défaut.

content_type
str
valeur par défaut: None

JSON par défaut, définissez application/xml si XML.

Retours

Une instance de ce modèle

Exceptions

DeserializationError if something went wrong

enable_additional_properties_sending

enable_additional_properties_sending()

from_dict

Analyser une dict à l’aide de l’extracteur de clé donné retourne un modèle.

Par défaut, considérez les extracteurs de clés (rest_key_case_insensitive_extractor, attribute_key_case_insensitive_extractor et last_rest_key_case_insensitive_extractor)

from_dict(data, key_extractors=None, content_type=None)

Paramètres

data
dict
Obligatoire

dict utilisant la structure RestAPI

content_type
str
valeur par défaut: None

JSON par défaut, définissez application/xml si XML.

key_extractors
valeur par défaut: None

Retours

Une instance de ce modèle

Exceptions

DeserializationError if something went wrong

is_xml_model

is_xml_model()

serialize

Retourne le json qui serait envoyé à Azure à partir de ce modèle.

Il s’agit d’un alias pour as_dict(full_restapi_key_transformer, keep_readonly=False).

Si vous souhaitez une sérialisation XML, vous pouvez passer les kwargs is_xml=True.

serialize(keep_readonly=False, **kwargs)

Paramètres

keep_readonly
bool
valeur par défaut: False

Si vous souhaitez sérialiser les attributs readonly

Retours

Objet compatible JSON dict

Type de retour

validate

Validez ce modèle de manière récursive et retournez une liste de ValidationError.

validate()

Retours

Liste des erreurs de validation

Type de retour