Le impostazioni del timeout della richiesta di Cloud Run ti consentono di definire il tempo massimo a disposizione di un servizio per restituire una risposta. Se il servizio non risponde entro questo limite, Cloud Run chiude la connessione di rete e restituisce un errore HTTP 504.
La chiusura della connessione non termina l'istanza del container. Il container potrebbe continuare a elaborare la richiesta interrotta, il che può interferire con la gestione di altre richieste. Per evitare timeout, imposta un timeout superiore al tempo di esecuzione previsto oppure monitora il tempo di esecuzione rimanente per eseguire la pulizia e restituire i risultati in anticipo.
Periodo di timeout per i servizi
Il timeout è impostato per impostazione predefinita su 5 minuti (300 secondi) e può essere esteso fino a 60 minuti (3600 secondi).
Quando attivi il servizio da eventi Eventarc, sottoscrizioni push di Pub/Sub o Cloud Scheduler, viene applicato il timeout di questi servizi.
Puoi modificare questa impostazione quando esegui il deployment di un'immagine container o aggiornando la configurazione del servizio.
Oltre a modificare il timeout della richiesta di Cloud Run, devi anche controllare il framework del linguaggio per verificare se ha una propria impostazione del timeout della richiesta che devi aggiornare. Alcuni client del servizio Cloud Run potrebbero anche imporre un timeout più restrittivo.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per configurare ed eseguire il deployment di servizi Cloud Run, chiedi all'amministratore di concederti i seguenti ruoli IAM:
- Cloud Run Developer (
roles/run.developer) sul servizio Cloud Run - Utente dell'account di servizio (
roles/iam.serviceAccountUser) sull'identità di servizio
Se esegui il deployment di un servizio o funzione dal codice sorgente, devi anche disporre di ruoli aggiuntivi concessi al tuo progetto e al account di servizio di Cloud Build.
Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il tuo servizio Cloud Run interagisce con le APIGoogle Cloud , come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per saperne di più sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestisci l'accesso.
Impostare e aggiornare il timeout della richiesta
Qualsiasi modifica alla configurazione comporta la creazione di una nuova revisione. Anche le revisioni successive riceveranno automaticamente questa impostazione di configurazione, a meno che tu non apporti aggiornamenti espliciti per modificarla.
Puoi impostare il timeout della richiesta utilizzando la Google Cloud console, la riga di comando gcloud CLI o un file YAML quando crei un nuovo servizio o esegui il deployment di una nuova revisione.
Console
Nella Google Cloud console, vai a Cloud Run:
Seleziona Servizi dal menu di navigazione di Cloud Run e fai clic su Esegui il deployment del container per configurare un nuovo servizio. Se stai configurando un servizio esistente, fai clic sul servizio.
Se stai configurando un nuovo servizio, compila la pagina delle impostazioni iniziali del servizio, poi fai clic su Container, Networking, sicurezza per espandere la pagina di configurazione del servizio.
Se stai configurando un servizio esistente, fai clic sulla scheda Scalabilità.
In Richieste, nel campo Timeout della richiesta, inserisci il valore di timeout che vuoi utilizzare in secondi. Utilizza valori compresi tra
1e3600secondi.Fai clic su Crea per un nuovo servizio. Fai clic su Visualizza differenze ed esegui di nuovo il deployment, poi su Esegui il deployment delle modifiche per un servizio esistente.
gcloud
Puoi aggiornare il timeout della richiesta per una determinata revisione in qualsiasi momento utilizzando il seguente comando:
gcloud run services update SERVICE --timeout=TIMEOUT
Sostituisci quanto segue:
- SERVICE: il nome del servizio.
TIMEOUT: il tempo entro il quale deve essere restituita una risposta, utilizzando un valore intero o un valore di durata assoluta, ad esempio
1m20s, ovvero 1 minuto e 20 secondi. Se utilizzi un valore intero, l'unità è considerata in secondi. Il valore specificato deve essere inferiore a 60 minuti.
Puoi anche impostare il timeout della richiesta durante il deployment utilizzando il comando:
gcloud run deploy --image IMAGE_URL --timeout=TIMEOUT
Sostituisci quanto segue:
IMAGE_URL: un riferimento all'immagine container, ad esempious-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formato diLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- TIMEOUT: il tempo entro il quale deve essere
restituita una risposta, utilizzando un valore intero o un valore di durata, ad esempio
1m20sovvero 1 minuto e 20 secondi. Se utilizzi un valore intero, l'unità è considerata in secondi. Il valore specificato deve essere inferiore a 60 minuti.
YAML
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Aggiorna l'attributo
timeoutSeconds:apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE spec: template: spec: containers: - image: IMAGE timeoutSeconds: VALUE
Sostituisci quanto segue:
- SERVICE: il nome del servizio Cloud Run.
IMAGE_URL: un riferimento all'immagine container, ad esempious-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formato diLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG.- VALUE: il timeout scelto, in secondi.
Crea o aggiorna il servizio utilizzando il seguente comando:
gcloud run services replace service.yaml
Il comando
gcloud run services replaceutilizza per impostazione predefinita il fileservice.yaml, se presente.
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Aggiungi quanto segue a unagoogle_cloud_run_v2_service
risorsa nella configurazione Terraform:Sostituisci 300s con il timeout della richiesta scelto per il servizio.
Visualizzare le impostazioni del timeout della richiesta
Per visualizzare le impostazioni del timeout della richiesta correnti per il servizio Cloud Run:
Console
Nella Google Cloud console, vai alla pagina Servizi di Cloud Run:
Fai clic sul servizio che ti interessa per aprire la pagina Dettagli servizio.
Fai clic sulla scheda Scalabilità per visualizzare le impostazioni.
gcloud
Utilizza il seguente comando:
gcloud run services describe SERVICE
Individua l'impostazione del timeout della richiesta nella configurazione restituita.