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. Você pode especificar a duração do tempo limite
como um valor inteiro em segundos, minutos ou horas. Por exemplo, para definir o tempo limite como 10 minutos e 5 segundos, especifique o valor como 605
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) } }() }
Funções exigidas
Para receber as permissões necessárias para configurar os jobs do Cloud Run, peça ao administrador para conceder a você os seguintes papéis do IAM:
-
Desenvolvedor do Cloud Run (
roles/run.developer
) no job do Cloud Run -
Usuário da conta de serviço (
roles/iam.serviceAccountUser
) na conta de serviço
Para uma lista de papéis e permissões do IAM associados ao Cloud Run, consulte Papéis do IAM do Cloud Run e Permissões do IAM do Cloud Run. Se o job do Cloud Run interagir com APIs do Google Cloud, como bibliotecas de cliente do Cloud, consulte o guia de configuração de identidade de serviço. Para mais informações sobre como conceder papéis, consulte permissões de implantação e gerenciar acesso.
Definir tempo limite da tarefa
Para especificar o tempo limite da tarefa para um job do Cloud Run:
Console
No console do Google Cloud, acesse a página de jobs do Cloud Run:
Clique em Implantar contêiner e selecione Job para preencher a página inicial de configurações do job. Se você estiver configurando um job, clique nele e em Editar.
Clique em Contêiner, variáveis e secrets, conexões e segurança para expandir a página de propriedades do job.
Clique na guia Geral.
- No campo Tempo limite da tarefa, especifique a duração máxima das tarefas do job em
job atual e selecione uma Unidade de tempo. Só é possível especificar a duração do tempo limite
como um valor inteiro em segundo, minuto ou hora. Por exemplo, para definir um
duração de 10 minutos e 5 segundos, no campo Tempo limite da tarefa, especifique
605
e selecione a Unidade de tempo como segundo.
- No campo Tempo limite da tarefa, especifique a duração máxima das tarefas do job em
job atual e selecione uma Unidade de tempo. Só é possível especificar a duração do tempo limite
como um valor inteiro em segundo, minuto ou hora. Por exemplo, para definir um
duração de 10 minutos e 5 segundos, no campo Tempo limite da tarefa, especifique
Clique em Criar ou Atualizar.
gcloud
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.
Para um job que você está atualizando, faça o seguinte:
gcloud run jobs update JOB_NAME --task-timeout TIMEOUT
YAML
Se você estiver criando um novo serviço, pule esta etapa. Se você estiver atualizando um serviço existente, faça o download da configuração YAML correspondente:
gcloud run jobs describe JOB_NAME --format export > job.yaml
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:
- 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 pela duração máxima das tarefas do job;
especificando a quantidade de tempo e as unidades. Só é possível especificar o horário
como um valor inteiro em segundos, minutos ou horas. Por exemplo, para definir
com duração de 10 minutos e 5 segundos, especifique
605s
.
Também é possível definir outros detalhes de configurações, como variáveis de ambiente ou limites de memória.
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
:
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
No console do Google Cloud, acesse a página de jobs do Cloud Run:
Clique no job em que você tem interesse para abrir a página Detalhes do job.
Clique na guia Configuração.
Localize a definição do tempo limite da tarefa nos detalhes de configuração.
gcloud
Use o comando a seguir:
gcloud run jobs describe JOB_NAME
Localize a configuração de tempo limite da tarefa na configuração retornada.