Partager via


JobPreparationTask interface

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 sont les suivantes : téléchargement de fichiers de ressources courants 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 courants vers l’emplacement partagé sur le nœud. (AZ_BATCH_NODE_ROOT_DIR\shared) ou démarrer un service local sur le nœud afin que toutes les tâches de ce travail puissent communiquer avec elle. Si la tâche de préparation du travail échoue (autrement dit, épuise son nombre de nouvelles tentatives avant de quitter 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 jusqu’à ce qu’il soit réimagené. 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 la réexécuterOnNodeRebootAfterSuccess est vraie ou si la tâche de préparation du travail n’a pas terminé précédemment. Si le nœud est réimagené, la tâche de préparation du travail est réexécuter avant de planifier une tâche du travail. Batch réessaye les 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 en raison d’opérations de récupération sont indépendantes et ne sont pas comptabilisées par rapport au maxTaskRetryCount. Même si maxTaskRetryCount est 0, une nouvelle tentative interne en raison d’une opération de récupération peut se produire. En raison de cela, 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 longues consiste à utiliser une forme de point de contrôle.

Propriétés

commandLine

Ligne de commande de la tâche de préparation du travail. 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’extension de variable 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 de fichier, elle doit utiliser un chemin relatif (par rapport au répertoire de travail de tâche) ou utiliser la variable d’environnement fournie par Batch (https://docs.microsoft.com/en-us/azure/batch/batch-compute-node-environment-variables).

constraints

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

containerSettings

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 sont récursifs sous le AZ_BATCH_NODE_ROOT_DIR (la racine des répertoires Azure Batch sur le nœud) sont mappés dans le conteneur, toutes les variables d’environnement de tâche sont mappées au 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.

environmentSettings

Liste des paramètres de variable d’environnement pour la tâche de préparation du travail.

id

Chaîne qui identifie de façon unique la tâche de préparation du travail dans le travail. 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 dans le 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 requête avec le code d’erreur TaskIdSameAsJobPreparationTask ; si vous appelez directement l’API REST, le code d’état HTTP est 409 (Conflit).

rerunOnNodeRebootAfterSuccess

Indique si le service Batch doit réexécuter la tâche de préparation du travail après un 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éinitialisé ou si la tâche de préparation du travail n’a pas terminé (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 du travail pour qu’elle soit idempotente et se comporter correctement si elle est exécutée plusieurs fois. La valeur par défaut est true.

resourceFiles

Liste des fichiers que le service Batch télécharge sur le nœud de calcul avant d’exécuter la ligne de commande. 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 requête échoue et le code d’erreur de réponse est RequestEntityTooLarge. Si cela se produit, la collection de ResourceFiles doit être réduite en taille. Pour ce faire, vous pouvez utiliser des fichiers .zip, des packages d’application ou des conteneurs Docker.

userIdentity

Identité de l’utilisateur sous laquelle la tâche de préparation du travail s’exécute. Si elle est omise, la tâche s’exécute en tant qu’utilisateur non administratif unique à la tâche sur les nœuds de calcul Windows, ou un utilisateur non administratif unique au pool sur les nœuds de calcul Linux.

waitForSuccess

Indique si le service Batch doit attendre que la tâche de préparation du travail se termine correctement avant de planifier les 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 la valeur est 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 des 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, d’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.

Détails de la propriété

commandLine

Ligne de commande de la tâche de préparation du travail. 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’extension de variable 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 de fichier, elle doit utiliser un chemin relatif (par rapport au répertoire de travail de tâche) ou utiliser la variable d’environnement fournie par Batch (https://docs.microsoft.com/en-us/azure/batch/batch-compute-node-environment-variables).

commandLine: string

Valeur de propriété

string

constraints

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

constraints?: TaskConstraints

Valeur de propriété

containerSettings

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 sont récursifs sous le AZ_BATCH_NODE_ROOT_DIR (la racine des répertoires Azure Batch sur le nœud) sont mappés dans le conteneur, toutes les variables d’environnement de tâche sont mappées au 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.

containerSettings?: TaskContainerSettings

Valeur de propriété

environmentSettings

Liste des paramètres de variable d’environnement pour la tâche de préparation du travail.

environmentSettings?: EnvironmentSetting[]

Valeur de propriété

id

Chaîne qui identifie de façon unique la tâche de préparation du travail dans le travail. 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 dans le 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 requête avec le code d’erreur TaskIdSameAsJobPreparationTask ; si vous appelez directement l’API REST, le code d’état HTTP est 409 (Conflit).

id?: string

Valeur de propriété

string

rerunOnNodeRebootAfterSuccess

Indique si le service Batch doit réexécuter la tâche de préparation du travail après un 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éinitialisé ou si la tâche de préparation du travail n’a pas terminé (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 du travail pour qu’elle soit idempotente et se comporter correctement si elle est exécutée plusieurs fois. La valeur par défaut est true.

rerunOnNodeRebootAfterSuccess?: boolean

Valeur de propriété

boolean

resourceFiles

Liste des fichiers que le service Batch télécharge sur le nœud de calcul avant d’exécuter la ligne de commande. 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 requête échoue et le code d’erreur de réponse est RequestEntityTooLarge. Si cela se produit, la collection de ResourceFiles doit être réduite en taille. Pour ce faire, vous pouvez utiliser des fichiers .zip, des packages d’application ou des conteneurs Docker.

resourceFiles?: ResourceFile[]

Valeur de propriété

userIdentity

Identité de l’utilisateur sous laquelle la tâche de préparation du travail s’exécute. Si elle est omise, la tâche s’exécute en tant qu’utilisateur non administratif unique à la tâche sur les nœuds de calcul Windows, ou un utilisateur non administratif unique au pool sur les nœuds de calcul Linux.

userIdentity?: UserIdentity

Valeur de propriété

waitForSuccess

Indique si le service Batch doit attendre que la tâche de préparation du travail se termine correctement avant de planifier les 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 la valeur est 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 des 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, d’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.

waitForSuccess?: boolean

Valeur de propriété

boolean