Definir tempo limite da tarefa (jobs)

Por padrão, cada tarefa é executada por no máximo 10 minutos: é possível alterar esse tempo para um tempo mais curto ou um tempo mais longo de até 24 horas.

Defina o tempo limite da tarefa conforme descrito nesta página. Não há tempo limite explícito na execução de um job: a execução do job é concluída quando todas as tarefas forem concluídas.

No caso de novas tentativas, a configuração de tempo limite se aplica a cada tentativa de uma tarefa. Se a tentativa da tarefa não for concluída nesse período, ela será interrompida.

As unidades especificam uma duração. Por exemplo, 10m5s é 10 minutos e 5 segundos. Se você não especificar uma unidade, os segundos serão considerados como a unidade. Por exemplo, o valor 10 é 10 segundos.

Como observar e manipular eventos de manutenção

Os jobs podem passar por eventos de manutenção periodicamente. Durante um evento de manutenção, todas as tarefas em andamento são migradas da máquina atual para uma máquina diferente. Esse processo de migração preserva todo o estado da tarefa. No entanto, há uma breve pausa no processamento durante a migração da tarefa.

Os eventos de manutenção são transparentes. não vai ser preciso fazer mudanças no contêiner para lidar com eventos de manutenção. Sempre que uma tarefa é iniciada e termina a migração, o Cloud Run imprime uma mensagem de registro.

No entanto, se você quiser monitorar ou manipular eventos de manutenção de maneira específica, poderá capturar o sinal SIGTSTP, que é enviado 10 segundos antes de uma tarefa ser migrada. Após a migração, a tarefa recebe um sinal SIGCONT imediatamente após a reinicialização.

A amostra em Go a seguir é uma função que captura esses sinais e imprime uma entrada de registro:

func testSignals() {
    sigs := make(chan os.Signal, 1)
    signal.Notify(sigs, syscall.SIGTSTP, syscall.SIGCONT)
    go func() {
        for  {
            sig := <-sigs
            log.Printf("Got Signal: %v", sig)
        }
    }()
 }
 

Definir tempo limite da tarefa

Para especificar o tempo limite da tarefa para um job do Cloud Run:

Console

  1. No console do Google Cloud, acesse a página de jobs do Cloud Run:

    Acesse o Cloud Run

  2. Se você estiver configurando um novo job, clique na guia Jobs e preencha a página inicial de configurações do job conforme quiser. Se você estiver configurando um job, clique nele e em Editar.

  3. Clique em Contêiner, variáveis e secrets, conexões e segurança para expandir a página de propriedades do job.

  4. Clique na guia Geral.

    imagem

    • Especifique a duração máxima das tarefas do job no job atual, especificando a quantidade de tempo e as unidades. Por exemplo, 10m5s é de 10 minutos e 5 segundos.
  5. Clique em Criar ou Atualizar.

Linha de comando

  1. Para um job que você está criando:

    gcloud run jobs create JOB_NAME --image IMAGE_URL --task-timeout TIMEOUT

    Substituir

    • JOB_NAME pelo nome do job;
    • IMAGE_URL por uma referência à imagem de contêiner. Por exemplo, us-docker.pkg.dev/cloudrun/container/job:latest;
    • TIMEOUT com a duração máxima das tarefas do job, especificando a quantidade de tempo e as unidades. Por exemplo, 10m5s é de 10 minutos e 5 segundos.
  2. Para um job que você está atualizando, faça o seguinte:

    gcloud run jobs update JOB_NAME --task-timeout TIMEOUT

YAML

Faça o download e consulte a configuração do job que já existe usando o comando gcloud run jobs describe --format export, que gera resultados limpos no formato YAML. Em seguida, modifique os campos descritos abaixo e faça upload do YAML modificado usando o comando gcloud run jobs replace. Modifique os campos somente conforme documentado.

  1. Para visualizar e fazer o download da configuração:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Atualize o atributo timeoutSeconds::

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE
              timeoutSeconds: TIMEOUT

    Substitua TIMEOUT pela duração máxima das tarefas do job, especificando a quantidade de tempo e as unidades. Por exemplo, 10m5s é de 10 minutos e 5 segundos.

    Também é possível definir outras configurações, como variáveis de ambiente ou limites de memória.

  3. Atualize a configuração do job que já existe:

    gcloud run jobs replace job.yaml

Terraform

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Para especificar o tempo limite da tarefa para um job do Cloud Run, use o recurso google_cloud_run_v2_job e aplique o seguinte snippet ao seu arquivo main.tf:

resource "google_cloud_run_v2_job" "default" {
  name         = "cloud-run-job-timeout"
  location     = "us-central1"
  launch_stage = "BETA"

  template {
    template {
      timeout = "3.500s"

      containers {
        image = "us-docker.pkg.dev/cloudrun/container/job:latest"
      }
    }
  }
}

Ver configurações de tempo limite da tarefa

Para ver as configurações atuais de tempo limite da tarefa do job do Cloud Run:

Console

  1. No console do Google Cloud, acesse a página de jobs do Cloud Run:

    Acessar jobs do Cloud Run

  2. Clique no job em que você tem interesse para abrir a página Detalhes do job.

  3. Clique na guia Configuração.

  4. Localize a definição do tempo limite da tarefa nos detalhes de configuração.

Linha de comando

  1. Use o comando a seguir:

    gcloud run jobs describe JOB_NAME
  2. Localize a configuração de tempo limite da tarefa na configuração retornada.