Impostare il timeout delle attività per i job

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

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

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 come 605 secondi.

Se i tentativi di ripetizione sono attivi per il job, l'impostazione del timeout si applica a ogni tentativo di un'attività. Se il tentativo di attività non viene completato entro questo periodo di tempo, verrà interrotto. Più a lungo viene eseguito un job, maggiore è la probabilità che si verifichino problemi che ne causano l'esito negativo, come errori di dipendenza downstream, errori di esaurimento della memoria o problemi di infrastruttura. Ti consigliamo di attivare i tentativi per tutti i job, ma soprattutto per quelli con attività di lunga durata.

Eventi di manutenzione

I job vengono sottoposti periodicamente a eventi di manutenzione. Durante un evento di manutenzione, tutte le attività in corso vengono migrate dalla macchina attuale a un'altra macchina. L'elaborazione viene brevemente sospesa durante la migrazione dell'attività.

Il processo di migrazione conserva lo stato dell'attività, con una notevole eccezione: le connessioni di rete VPC in uscita si interrompono durante gli eventi di manutenzione. Ti consigliamo di utilizzare librerie client in grado di gestire ripristini occasionali della connessione.

Cloud Run stampa un messaggio di log ogni volta che un'attività inizia e termina la migrazione.

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

Il seguente esempio Go è una funzione che rileva questi segnali 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 di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM Cloud Run e Autorizzazioni IAM Cloud Run. Se il tuo job Cloud Run interagisce con le APIGoogle Cloud , come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per ulteriori informazioni sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestire l'accesso.

Imposta timeout attività

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

Console

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

    Vai a Cloud Run

  2. Seleziona Job dal menu e fai clic su Deploy container per compilare la pagina delle impostazioni iniziali del job. Se stai configurando un job esistente, seleziona il job, poi fai clic su Modifica.

  3. Fai clic su Container, volumi, 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 Unità di tempo come secondo.
  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 container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest.
    • TIMEOUT con la durata massima per le attività del job, specificando la quantità di tempo e le unità: ad esempio, 10m5s sono 10 minuti e 5 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 container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest.
    • TIMEOUT con la durata massima per le attività del job, specificando la quantità di tempo e le unità. Puoi specificare l'ora solo come valore intero in secondi, minuti o ore. Ad esempio, per impostare una durata di 10 minuti e 5 secondi, specifica 605.

    Puoi anche specificare ulteriori dettagli di configurazione, come le variabili di ambiente o i 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.

Aggiungi quanto segue a una risorsa google_cloud_run_v2_job nella configurazione Terraform:

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 di timeout dell'attività

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

Console

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

    Vai ai job Cloud Run

  2. Fai clic sull'offerta di lavoro che ti interessa per aprire la pagina Dettagli offerta di lavoro.

  3. Fai clic su Visualizza e modifica la configurazione del job.

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

gcloud

  1. Utilizza questo comando:

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