Imposta il timeout dell'attività (job)

Per impostazione predefinita, ogni attività viene eseguita per un massimo di 10 minuti: puoi impostare un periodo di tempo più breve o più lungo fino a 168 ore (7 giorni). Il supporto per i timeout superiori a 24 ore è disponibile in Anteprima.

Imposti il timeout dell'attività come descritto in questa pagina. Non è previsto un timeout esplicito per un'esecuzione del job: quando tutte le attività sono completate, l'esecuzione del job è completata.

Le unità specificano una durata. Puoi specificare la durata del timeout come valore intero in secondi, minuti o ore. Ad esempio, per impostare la durata del timeout su 10 minuti e 5 secondi, specifica il valore 605 secondi.

Se per il job sono abilitati i tentativi di ripetizione, l'impostazione del timeout si applica a ogni tentativo di un'attività. Se il tentativo di esecuzione dell'attività non viene completato entro questo periodo di tempo, verrà interrotto. Maggiore è il tempo di esecuzione di un job, maggiori sono le probabilità di riscontrare problemi che ne causano il fallimento, ad esempio errori di dipendenza downstream, errori di esaurimento della memoria o problemi di infrastruttura. Ti consigliamo di attivare i tentativi di nuovo invio per tutti i job, ma soprattutto per quelli con attività che richiedono molto tempo.

Osservazione e gestione degli eventi di manutenzione

I job potrebbero subire periodicamente eventi di manutenzione. Durante un evento di manutenzione, viene eseguita la migrazione di tutte le attività in corso dalla macchina corrente a un'altra macchina. Questo processo di migrazione conserva l'intero stato dell'attività. Tuttavia, si verifica una breve interruzione nel corso dell'elaborazione durante la migrazione dell'attività.

Gli eventi di manutenzione sono trasparenti; non devi apportare modifiche al contenitore per gestirli. Tieni presente che ogni volta che inizia e termina la migrazione di un compito, Cloud Run stampa un messaggio di log.

Tuttavia, se vuoi monitorare o gestire gli eventi di manutenzione in un modo specifico, puoi acquisire l'indicatore SIGTSTP, che viene inviato 10 secondi prima della migrazione di un'attività. Dopo la migrazione, l'attività riceve un segnale SIGCONT subito dopo il riavvio.

Il seguente esempio Go è una funzione che rileva questi indicatori e stampa una voce di log:

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)
        }
    }()
 }
 

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per configurare i job Cloud Run, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Per un elenco dei ruoli e delle autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il tuo job Cloud Run si interfaccia con le API Google Cloud, come le librerie client Cloud, consulta la guida alla configurazione dell'identità di servizio. Per ulteriori informazioni sulla concessione dei ruoli, consulta le autorizzazioni di deployment e gestisci l'accesso.

Imposta il timeout dell'attività

Per specificare il timeout dell'attività per un job Cloud Run:

Console

  1. Nella console Google Cloud, vai alla pagina dei job Cloud Run:

    Vai a Cloud Run

  2. Fai clic su Esegui il deployment del contenitore e seleziona Job per compilare la pagina delle impostazioni iniziali del job. Se stai configurando un job esistente, selezionalo e fai clic su Modifica.

  3. Fai clic su Contenitore, variabili e secret, connessioni, sicurezza per espandere la pagina delle proprietà del job.

  4. Fai clic sulla scheda Generale.

    immagine

    • Nel campo Timeout attività, specifica la durata massima per le attività del job nel job corrente e seleziona un'unità di tempo. Puoi specificare la durata del timeout solo come valore intero in secondi, minuti o ore. Ad esempio, per impostare una durata di 10 minuti e 5 secondi, nel campo Timeout attività specifica 605 e seleziona secondo come Unità di tempo.
  5. Fai clic su Crea o Aggiorna.

gcloud

  1. Per un job che stai creando:

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

    Sostituisci

    • JOB_NAME con il nome del job.
    • IMAGE_URL con un riferimento all'immagine del container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest.
    • TIMEOUT con la durata massima per le attività del job, specificando la durata e le unità di misura: ad esempio, 10m5s corrisponde a dieci minuti e cinque secondi.
  2. Per un job che stai aggiornando:

    gcloud run jobs update JOB_NAME --task-timeout TIMEOUT

YAML

  1. Se stai creando un nuovo job, salta questo passaggio. Se stai aggiornando un job esistente, scarica la relativa configurazione YAML:

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Aggiorna l'attributo timeoutSeconds::

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

    Sostituisci:

    • JOB_NAME con il nome del job.
    • IMAGE_URL con un riferimento all'immagine del container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest.
    • TIMEOUT con la durata massima per le attività del job, specificando la durata e le unità di misura. Puoi specificare il tempo solo come valore intero in secondi, minuti o ore. Ad esempio, per impostare una durata di 10 minuti e 5 secondi, specifica 605s.

    Puoi anche specificare ulteriori dettagli di configurazione, ad esempio variabili di ambiente o limiti di memoria.

  3. Aggiorna la configurazione del job esistente:

    gcloud run jobs replace job.yaml

Terraform

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Per specificare il timeout della task per un job Cloud Run, utilizza la risorsa google_cloud_run_v2_job e applica lo snippet seguente al file main.tf:

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

  deletion_protection = false # set to "true" in production

  template {
    template {
      timeout = "3.500s"

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

Visualizzare le impostazioni del timeout delle attività

Per visualizzare le impostazioni di timeout delle attività correnti per il tuo job Cloud Run:

Console

  1. Nella console Google Cloud, vai alla pagina dei job Cloud Run:

    Vai ai job Cloud Run

  2. Fai clic sul job che ti interessa per aprire la pagina Dettagli job.

  3. Fai clic sulla scheda Configuration (Configurazione).

  4. Individua l'impostazione del timeout dell'attività nei dettagli della configurazione.

gcloud

  1. Utilizza il seguente comando:

    gcloud run jobs describe JOB_NAME
  2. Individua l'impostazione del timeout dell'attività nella configurazione restituita.

# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

source "https://rubygems.org"

gem "functions_framework", "~> 1.4"