Compartilhar via


JobPreparationTask interface

Você pode usar a Preparação do Trabalho para preparar um nó para executar Tarefas para o Trabalho. As atividades normalmente executadas na Preparação do Trabalho incluem: Baixar arquivos de recursos comuns usados por todas as Tarefas no Trabalho. A Tarefa de Preparação de Trabalho pode baixar esses arquivos de recurso comuns para o local compartilhado no Nó. (AZ_BATCH_NODE_ROOT_DIR\shared) ou iniciando um serviço local no Nó para que todas as tarefas desse trabalho possam se comunicar com ele. Se a Tarefa preparação do trabalho falhar (ou seja, esgota sua contagem de repetições antes de sair com o código de saída 0), o Lote não executará Tarefas deste Trabalho no Nó. O Nó de Computação permanece inelegível para executar tarefas deste trabalho até que ele seja reimageado. O Nó de Computação permanece ativo e pode ser usado para outros trabalhos. A Tarefa preparação do trabalho pode ser executada várias vezes no mesmo nó. Portanto, você deve escrever a Tarefa de Preparação de Trabalho para lidar com a re-execução. Se o Nó for reinicializado, a Tarefa de Preparação de Trabalho será executada novamente no Nó de Computação antes de agendar qualquer outra Tarefa do Trabalho, se a execução novaMenteNodeRebootAfterSuccess for verdadeira ou se a Tarefa de Preparação do Trabalho não tiver sido concluída anteriormente. Se o Nó for reimageado, a Tarefa de Preparação do Trabalho será executada novamente antes de agendar qualquer Tarefa do Trabalho. O Lote tentará novamente tarefas quando uma operação de recuperação for disparada em um nó. Exemplos de operações de recuperação incluem (mas não se limitam a) quando um nó não íntegro é reinicializado ou um Nó de Computação desapareceu devido a uma falha de host. As novas tentativas devido às operações de recuperação são independentes e não são contadas em relação ao maxTaskRetryCount. Mesmo que o maxTaskRetryCount seja 0, uma repetição interna devido a uma operação de recuperação poderá ocorrer. Por isso, todas as tarefas devem ser idempotentes. Isso significa que as tarefas precisam tolerar ser interrompidas e reiniciadas sem causar dados corrompidos ou duplicados. A melhor prática para tarefas de execução longa é usar alguma forma de ponto de verificação.

Propriedades

commandLine

A linha de comando da Tarefa preparação do trabalho. A linha de comando não é executada em um shell e, portanto, não pode aproveitar os recursos do shell, como expansão de variável de ambiente. Se quiser aproveitar esses recursos, invoque o shell na linha de comando, por exemplo, usando "cmd /c MyCommand" no Windows ou "/bin/sh -c MyCommand" no Linux. Se a linha de comando se referir a caminhos de arquivo, ela deverá usar um caminho relativo (relativo ao diretório de trabalho da Tarefa) ou usar a variável de ambiente fornecida pelo Lote (https://docs.microsoft.com/en-us/azure/batch/batch-compute-node-environment-variables).

constraints

Restrições que se aplicam à Tarefa preparação do trabalho.

containerSettings

As configurações do contêiner no qual a Tarefa de Preparação de Trabalho é executada. Quando isso é especificado, todos os diretórios recursivamente abaixo do AZ_BATCH_NODE_ROOT_DIR (a raiz dos diretórios do Lote do Azure no nó) são mapeados para o contêiner, todas as variáveis de ambiente de tarefa são mapeadas para o contêiner e a linha de comando Tarefa é executada no contêiner. Os arquivos produzidos no contêiner fora de AZ_BATCH_NODE_ROOT_DIR podem não ser refletidos no disco do host, o que significa que as APIs de arquivo do Lote não poderão acessar esses arquivos.

environmentSettings

Uma lista de configurações de variável de ambiente para a Tarefa de Preparação do Trabalho.

id

Uma cadeia de caracteres que identifica exclusivamente a Tarefa de Preparação de Trabalho dentro do Trabalho. A ID pode conter qualquer combinação de caracteres alfanuméricos, incluindo hifens e sublinhados, e não pode conter mais de 64 caracteres. Se você não especificar essa propriedade, o serviço do Lote atribuirá um valor padrão de 'jobpreparation'. Nenhuma outra tarefa no trabalho pode ter a mesma ID que a Tarefa de Preparação do Trabalho. Se você tentar enviar uma Tarefa com a mesma ID, o serviço do Lote rejeitará a solicitação com o código de erro TaskIdSameAsJobPreparationTask; se você estiver chamando a API REST diretamente, o código de status HTTP será 409 (Conflito).

rerunOnNodeRebootAfterSuccess

Se o serviço do Lote deve executar novamente a Tarefa de Preparação de Trabalho após a reinicialização de um Nó de Computação. A Tarefa preparação do trabalho sempre será executada novamente se um Nó de Computação for reimageado ou se a Tarefa de Preparação do Trabalho não tiver sido concluída (por exemplo, porque a reinicialização ocorreu enquanto a Tarefa estava em execução). Portanto, você sempre deve escrever uma Tarefa de Preparação de Trabalho para ser idempotente e se comportar corretamente se for executada várias vezes. O valor padrão é true.

resourceFiles

Uma lista de arquivos que o serviço do Lote baixará no Nó de Computação antes de executar a linha de comando. Os arquivos listados sob esse elemento estão localizados no diretório de trabalho da Tarefa. Há um tamanho máximo para a lista de arquivos de recurso. Quando o tamanho máximo for excedido, a solicitação falhará e o código de erro de resposta será RequestEntityTooLarge. Se isso ocorrer, a coleção de ResourceFiles deverá ser reduzida em tamanho. Isso pode ser feito usando arquivos .zip, pacotes de aplicativos ou contêineres do Docker.

userIdentity

A identidade do usuário na qual a Tarefa preparação do trabalho é executada. Se omitida, a Tarefa será executada como um usuário não administrativo exclusivo para a Tarefa em Nós de Computação do Windows ou um usuário não administrativo exclusivo para o Pool em Nós de Computação do Linux.

waitForSuccess

Se o serviço do Lote deve aguardar a conclusão da Tarefa de Preparação do Trabalho com êxito antes de agendar outras Tarefas do Trabalho no Nó de Computação. Uma Tarefa de Preparação de Trabalho foi concluída com êxito se ela sair com o código de saída 0. Se true e a Tarefa preparação do trabalho falharem em um nó, o serviço do Lote repetirá a Tarefa de Preparação do Trabalho até a contagem máxima de repetição (conforme especificado no elemento de restrições). Se a Tarefa ainda não tiver sido concluída com êxito após todas as novas tentativas, o serviço do Lote não agendará Tarefas do Trabalho para o Nó. O Nó permanece ativo e qualificado para executar Tarefas de outros Trabalhos. Se for falso, o serviço do Lote não aguardará a conclusão da Tarefa de Preparação do Trabalho. Nesse caso, outras tarefas do trabalho podem começar a ser executadas no Nó de Computação enquanto a Tarefa de Preparação do Trabalho ainda estiver em execução; e mesmo que a Tarefa de Preparação do Trabalho falhe, novas Tarefas continuarão a ser agendadas no Nó de Computação. O valor padrão é true.

Detalhes da propriedade

commandLine

A linha de comando da Tarefa preparação do trabalho. A linha de comando não é executada em um shell e, portanto, não pode aproveitar os recursos do shell, como expansão de variável de ambiente. Se quiser aproveitar esses recursos, invoque o shell na linha de comando, por exemplo, usando "cmd /c MyCommand" no Windows ou "/bin/sh -c MyCommand" no Linux. Se a linha de comando se referir a caminhos de arquivo, ela deverá usar um caminho relativo (relativo ao diretório de trabalho da Tarefa) ou usar a variável de ambiente fornecida pelo Lote (https://docs.microsoft.com/en-us/azure/batch/batch-compute-node-environment-variables).

commandLine: string

Valor da propriedade

string

constraints

Restrições que se aplicam à Tarefa preparação do trabalho.

constraints?: TaskConstraints

Valor da propriedade

containerSettings

As configurações do contêiner no qual a Tarefa de Preparação de Trabalho é executada. Quando isso é especificado, todos os diretórios recursivamente abaixo do AZ_BATCH_NODE_ROOT_DIR (a raiz dos diretórios do Lote do Azure no nó) são mapeados para o contêiner, todas as variáveis de ambiente de tarefa são mapeadas para o contêiner e a linha de comando Tarefa é executada no contêiner. Os arquivos produzidos no contêiner fora de AZ_BATCH_NODE_ROOT_DIR podem não ser refletidos no disco do host, o que significa que as APIs de arquivo do Lote não poderão acessar esses arquivos.

containerSettings?: TaskContainerSettings

Valor da propriedade

environmentSettings

Uma lista de configurações de variável de ambiente para a Tarefa de Preparação do Trabalho.

environmentSettings?: EnvironmentSetting[]

Valor da propriedade

id

Uma cadeia de caracteres que identifica exclusivamente a Tarefa de Preparação de Trabalho dentro do Trabalho. A ID pode conter qualquer combinação de caracteres alfanuméricos, incluindo hifens e sublinhados, e não pode conter mais de 64 caracteres. Se você não especificar essa propriedade, o serviço do Lote atribuirá um valor padrão de 'jobpreparation'. Nenhuma outra tarefa no trabalho pode ter a mesma ID que a Tarefa de Preparação do Trabalho. Se você tentar enviar uma Tarefa com a mesma ID, o serviço do Lote rejeitará a solicitação com o código de erro TaskIdSameAsJobPreparationTask; se você estiver chamando a API REST diretamente, o código de status HTTP será 409 (Conflito).

id?: string

Valor da propriedade

string

rerunOnNodeRebootAfterSuccess

Se o serviço do Lote deve executar novamente a Tarefa de Preparação de Trabalho após a reinicialização de um Nó de Computação. A Tarefa preparação do trabalho sempre será executada novamente se um Nó de Computação for reimageado ou se a Tarefa de Preparação do Trabalho não tiver sido concluída (por exemplo, porque a reinicialização ocorreu enquanto a Tarefa estava em execução). Portanto, você sempre deve escrever uma Tarefa de Preparação de Trabalho para ser idempotente e se comportar corretamente se for executada várias vezes. O valor padrão é true.

rerunOnNodeRebootAfterSuccess?: boolean

Valor da propriedade

boolean

resourceFiles

Uma lista de arquivos que o serviço do Lote baixará no Nó de Computação antes de executar a linha de comando. Os arquivos listados sob esse elemento estão localizados no diretório de trabalho da Tarefa. Há um tamanho máximo para a lista de arquivos de recurso. Quando o tamanho máximo for excedido, a solicitação falhará e o código de erro de resposta será RequestEntityTooLarge. Se isso ocorrer, a coleção de ResourceFiles deverá ser reduzida em tamanho. Isso pode ser feito usando arquivos .zip, pacotes de aplicativos ou contêineres do Docker.

resourceFiles?: ResourceFile[]

Valor da propriedade

userIdentity

A identidade do usuário na qual a Tarefa preparação do trabalho é executada. Se omitida, a Tarefa será executada como um usuário não administrativo exclusivo para a Tarefa em Nós de Computação do Windows ou um usuário não administrativo exclusivo para o Pool em Nós de Computação do Linux.

userIdentity?: UserIdentity

Valor da propriedade

waitForSuccess

Se o serviço do Lote deve aguardar a conclusão da Tarefa de Preparação do Trabalho com êxito antes de agendar outras Tarefas do Trabalho no Nó de Computação. Uma Tarefa de Preparação de Trabalho foi concluída com êxito se ela sair com o código de saída 0. Se true e a Tarefa preparação do trabalho falharem em um nó, o serviço do Lote repetirá a Tarefa de Preparação do Trabalho até a contagem máxima de repetição (conforme especificado no elemento de restrições). Se a Tarefa ainda não tiver sido concluída com êxito após todas as novas tentativas, o serviço do Lote não agendará Tarefas do Trabalho para o Nó. O Nó permanece ativo e qualificado para executar Tarefas de outros Trabalhos. Se for falso, o serviço do Lote não aguardará a conclusão da Tarefa de Preparação do Trabalho. Nesse caso, outras tarefas do trabalho podem começar a ser executadas no Nó de Computação enquanto a Tarefa de Preparação do Trabalho ainda estiver em execução; e mesmo que a Tarefa de Preparação do Trabalho falhe, novas Tarefas continuarão a ser agendadas no Nó de Computação. O valor padrão é true.

waitForSuccess?: boolean

Valor da propriedade

boolean