Agende tarefas dependentes

Este documento descreve como criar e executar uma tarefa que não está agendada até que tarefas específicas tenham sido bem-sucedidas ou falhado. Para saber mais sobre os estados das tarefas, consulte o artigo Vista geral da criação e execução de tarefas.

Se tiver uma carga de trabalho com requisitos de recursos variáveis, considere usar tarefas dependentes para criar uma cadeia automatizada de tarefas que usem VMs separadas. Por exemplo, separe os tipos de VMs usados para operações de baixa procura (como a preparação de dados) e operações com utilização intensiva de computação (como o tratamento de dados). Ao usar tarefas dependentes para ajudar a otimizar o consumo de recursos, pode reduzir os custos e a utilização de quotas.

Antes de começar

  1. Se nunca usou o Batch, reveja o artigo Comece a usar o Batch e ative o Batch concluindo os pré-requisitos para projetos e utilizadores.
  2. Para receber as autorizações de que precisa para criar uma tarefa, peça ao seu administrador para lhe conceder as seguintes funções de IAM:

    Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.

    Também pode conseguir as autorizações necessárias através de funções personalizadas ou outras funções predefinidas.

Restrições

As tarefas dependentes têm as seguintes restrições:

  • Uma tarefa dependente pode ter até quatro dependências. Cada dependência tem de conter um nome de tarefa exclusivo e um dos seguintes estados obrigatórios:

    • SUCCEEDED: com êxito
    • FAILED: falhou
    • FINISHED: com êxito ou com falhas
  • Quando cria uma tarefa dependente, todas as tarefas de dependência têm de existir.

  • Uma tarefa dependente não pode entrar no estado agendado (SCHEDULED) até que cada tarefa de dependência tenha entrado no respetivo estado necessário. Se for impossível para uma tarefa de dependência entrar no estado necessário, a tarefa dependente falha imediatamente sem ser agendada.

  • Tal como todas as tarefas, uma tarefa dependente não pode entrar no estado agendado (SCHEDULED) se exceder o tempo de espera máximo na fila. O Batch aplica este limite para evitar que os seus trabalhos fiquem obsoletos. Consequentemente, se esperar que o tempo restante necessário para a conclusão de qualquer uma das tarefas de dependência possa exceder este limite, considere fazer uma ou mais das seguintes ações:

    • Se ainda não criou uma tarefa de dependência, experimente reduzir o tempo de execução esperado da tarefa de dependência. Por exemplo, pode aumentar o paralelismo da carga de trabalho ou limitar o tempo de execução de quaisquer tarefas e executáveis que não precise de concluir com êxito.
    • Aguarde para criar a tarefa dependente até que o tempo de execução esperado das tarefas de dependência seja inferior ao limite.

Crie um trabalho dependente

Pode criar uma tarefa dependente através dos seguintes métodos:

Para especificar que uma tarefa é dependente, inclua o campo dependencies[].items, que suporta uma ou mais dependências especificadas como pares de chave/valor, no corpo principal do ficheiro JSON:

"dependencies": [
  {
    "items": {
      "DEPENDENCY_JOB_NAME": "REQUIRED_STATE"
    }
  }
]

Substitua o seguinte:

  • DEPENDENCY_JOB_NAME: o nome de uma tarefa de dependência que tem de atingir o estado necessário antes de esta tarefa dependente poder ser agendada.

  • REQUIRED_STATE: o estado necessário para a tarefa de dependência correspondente, que tem de ser SUCCEEDED, FAILED ou FINISHED.

Por exemplo, uma tarefa dependente com três dependências pode ter um ficheiro de configuração JSON semelhante ao seguinte:

{
  "taskGroups": [
    {
      "taskSpec": {
        "runnables": [
          {
            "script": {
              "text": "echo Hello World! This is task $BATCH_TASK_INDEX."
            }
          }
        ]
      },
      "taskCount": 3
    }
  ],
  "dependencies": [
    {
      "items": {
        "DEPENDENCY_JOB_NAME_1": "REQUIRED_STATE_1",
        "DEPENDENCY_JOB_NAME_2": "REQUIRED_STATE_2",
        "DEPENDENCY_JOB_NAME_3": "REQUIRED_STATE_3"
      }
    }
  ]
}

O que se segue?