Definir el tiempo de espera de las solicitudes de los servicios
Organízate con las colecciones
Guarda y clasifica el contenido según tus preferencias.
Si un servicio se ejecuta durante demasiado tiempo, el sistema toma medidas para finalizarlo o limitarlo.
En el caso de los servicios de Cloud Run, el ajuste de tiempo de espera de la solicitud especifica el tiempo en el que los servicios desplegados en Cloud Run deben devolver una respuesta. Si no se devuelve una respuesta en el plazo especificado, la solicitud finaliza y se devuelve un error 504. Ten en cuenta que la instancia del contenedor que ha atendido la solicitud no se termina. Es posible que el contenedor o el código sigan procesando la solicitud finalizada y otras solicitudes. Para evitarlo, impide que se agote el tiempo de espera en tu servicio con las siguientes técnicas:
Define un tiempo de espera superior al tiempo de ejecución previsto.
Monitoriza el tiempo que queda durante la ejecución. Después, realiza la limpieza y
vuelve pronto.
Periodo de tiempo de espera
El tiempo de espera predeterminado es de 5 minutos (300 segundos) y se puede ampliar hasta 60 minutos (3600 segundos).
Puedes cambiar este ajuste al implementar una imagen de contenedor o actualizando la configuración del servicio.
Además de cambiar el tiempo de espera de las solicitudes de Cloud Run, también debes comprobar si tu framework de lenguaje tiene su propio ajuste de tiempo de espera de las solicitudes, que también debes actualizar. Algunos clientes del servicio Cloud Run también pueden imponer un tiempo de espera más restrictivo.
Roles obligatorios
Para obtener los permisos que necesitas para configurar e implementar servicios de Cloud Run, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:
Si vas a desplegar un servicio o una función a partir de código fuente, también debes tener otros roles concedidos en tu proyecto y en la cuenta de servicio de Cloud Build.
Configurar y actualizar el tiempo de espera de las solicitudes
Cualquier cambio en la configuración conlleva la creación de una nueva revisión. Las revisiones posteriores también recibirán automáticamente este ajuste de configuración, a menos que hagas cambios explícitos para modificarlo.
Puedes definir el tiempo de espera de las solicitudes mediante la Google Cloud consola, la línea de comandos gcloud o un archivo YAML cuando creas un servicio o despliegas una revisión.
Seleccione Servicios en el menú y haga clic en Implementar contenedor para configurar un nuevo servicio.
Si vas a configurar un servicio que ya tienes, haz clic en él y, a continuación, en Editar y desplegar nueva revisión.
Si vas a configurar un servicio nuevo, rellena la página de configuración inicial del servicio y, a continuación, haz clic en Contenedores, volúmenes, redes y seguridad para desplegar la página de configuración del servicio.
Haz clic en la pestaña Contenedor.
En el campo Tiempo de espera de la solicitud, introduce el valor de tiempo de espera que quieras usar en segundos. Usa valores entre 1 y 3600 segundos, o entre 1 y 60 minutos.
TIMEOUT: el tiempo en el que se debe devolver una respuesta, mediante un valor entero o un valor de duración absoluta. Por ejemplo, 1m20s, que es 1 minuto y 20 segundos. Si usas un valor entero, se asumirá que la unidad son segundos. El valor que especifiques debe ser inferior a 60 minutos.
También puedes definir el tiempo de espera de las solicitudes durante la implementación con el siguiente comando:
gcloudrundeploy--imageIMAGE_URL--timeout=TIMEOUT
Haz los cambios siguientes:
IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorioREPO_NAME ya debe estar creado. La URL sigue el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
TIMEOUT: el tiempo en el que se debe devolver una respuesta. Se usa un valor entero o un valor de duración. Por ejemplo, 1m20s, que es 1 minuto y 20 segundos. Si usas un valor entero, se
asume que la unidad es segundos. El valor que especifiques debe ser inferior a 60 minutos.
YAML
Si va a crear un servicio, puede saltarse este paso.
Si va a actualizar un servicio, descargue su configuración YAML:
IMAGE_URL: una referencia a la imagen del contenedor, por ejemplo, us-docker.pkg.dev/cloudrun/container/hello:latest. Si usas Artifact Registry, el repositorioREPO_NAME ya debe estar creado. La URL sigue el formato LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
.
VALUE: el tiempo de espera elegido, en segundos.
Crea o actualiza el servicio con el siguiente comando:
resource"google_cloud_run_v2_service""default"{name="cloudrun-service-request-timeout"location="us-central1"deletion_protection=false # set to "true" in productiontemplate{containers{image="us-docker.pkg.dev/cloudrun/container/hello"} # Timeouttimeout="300s"}}
Sustituye 300s por el tiempo de espera de la solicitud que quieras para tu servicio.
Ver la configuración del tiempo de espera de las solicitudes
Para ver la configuración actual del tiempo de espera de las solicitudes de tu servicio de Cloud Run, sigue estos pasos:
[[["Es fácil de entender","easyToUnderstand","thumb-up"],["Me ofreció una solución al problema","solvedMyProblem","thumb-up"],["Otro","otherUp","thumb-up"]],[["Es difícil de entender","hardToUnderstand","thumb-down"],["La información o el código de muestra no son correctos","incorrectInformationOrSampleCode","thumb-down"],["Me faltan las muestras o la información que necesito","missingTheInformationSamplesINeed","thumb-down"],["Problema de traducción","translationIssue","thumb-down"],["Otro","otherDown","thumb-down"]],["Última actualización: 2025-08-21 (UTC)."],[],[],null,["# Set request timeout for services\n\nIf a service runs for too long, the system takes steps to terminate or throttle\nit.\n\nFor Cloud Run services, the request timeout setting specifies the\ntime within which a response must be returned by services deployed to\nCloud Run. If a response isn't returned within the time specified, the\nrequest ends and an error 504 is returned. Note that the container instance that\nserved the request is not terminated. The container or code might keep\nprocessing the terminated request and might be processing other requests. To\navoid this, prevent timeouts in your service with the following techniques:\n\n- Set a timeout higher than your expected execution time.\n- Track the amount of time left during execution. Then perform cleanup and return early.\n\nTimeout period\n--------------\n\nThe timeout is set by default to 5 minutes\n(300 seconds) and can be extended up to\n60 minutes\n(3600 seconds).\n\nWhen triggering your service from [Eventarc events](/run/docs/triggering/trigger-with-events),\n[Pub/Sub push subscriptions](/run/docs/triggering/pubsub-triggers)\nor [Cloud Scheduler](/run/docs/triggering/using-scheduler), the timeout\nof these services apply.\n| **Important:** For a timeout longer than 15 minutes, Google recommends implementing retries and making sure the service is tolerant to clients re-connecting in case the connection is lost (either by ensuring requests are idempotent, or by designing request handlers in such a way that they can resume from the point where they left off). The longer the timeout is, the more likely the connection can be lost due to failures on the client side or the Cloud Run side. When a client re-connects, a new request is initiated and the client isn't guaranteed to connect to the same instance of the service.\n\nYou can change this setting when you deploy a container image or by updating\nthe service configuration.\n\nIn addition to changing the Cloud Run request timeout, you should also\ncheck your language framework to see whether it has its own request timeout\nsetting that you must also update. Some clients of the Cloud Run\nservice might also impose a more restrictive timeout.\n\nRequired roles\n--------------\n\n\nTo get the permissions that\nyou need to configure and deploy Cloud Run services,\n\nask your administrator to grant you the\nfollowing IAM roles:\n\n- [Cloud Run Developer](/iam/docs/roles-permissions/run#run.developer) (`roles/run.developer`) on the Cloud Run service\n- [Service Account User](/iam/docs/roles-permissions/iam#iam.serviceAccountUser) (`roles/iam.serviceAccountUser`) on the service identity\n\n\nIf you are deploying a [service](/run/docs/deploying-source-code#required_roles)\nor [function](/run/docs/deploy-functions#required-roles) from source code, you\nmust also have additional roles granted to you on your project and\nCloud Build service account.\n\nFor a list of IAM roles and permissions that are associated with\nCloud Run, see\n[Cloud Run IAM roles](/run/docs/reference/iam/roles)\nand [Cloud Run IAM permissions](/run/docs/reference/iam/permissions).\nIf your Cloud Run service interfaces with\nGoogle Cloud APIs, such as Cloud Client Libraries, see the\n[service identity configuration guide](/run/docs/configuring/services/service-identity).\nFor more information about granting roles, see\n[deployment permissions](/run/docs/reference/iam/roles#additional-configuration)\nand [manage access](/iam/docs/granting-changing-revoking-access).\n\nSetting and updating request timeout\n------------------------------------\n\nAny configuration change leads to the\ncreation of a new revision. Subsequent revisions will also automatically get\nthis configuration setting unless you make explicit updates to change it.\n\nYou can set request timeout using the Google Cloud console, the gcloud\ncommand line, or a YAML file when you [create a new service](/run/docs/deploying#service) or\n[deploy a new revision](/run/docs/deploying#revision). \n\n### Console\n\n\n1. In the Google Cloud console, go to Cloud Run:\n\n [Go to Cloud Run](https://console.cloud.google.com/run)\n2. Select **Services** from the menu, and click **Deploy container** to\n configure a new service.\n If you are configuring an existing service, click the\n service, then click **Edit and deploy new revision**.\n\n3. If you are configuring a new service, fill out the initial service\n settings page, then click **Container(s), Volumes, Networking, Security** to expand the\n service configuration page.\n\n4. Click the **Container** tab.\n\n - In the **Request timeout** field, enter the timeout value that you want to use in seconds. Use values ranging from `1` to `3600` seconds, or from 1 to `60` minutes.\n5. Click **Create** or **Deploy**.\n\n### gcloud\n\nYou can [update the request timeout](/sdk/gcloud/reference/run/services/update)\nfor a given revision at any time by using the following command: \n\n```bash\ngcloud run services update SERVICE --timeout=TIMEOUT\n```\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003eSERVICE\u003c/var\u003e: the name of your service.\n- \u003cvar translate=\"no\"\u003eTIMEOUT\u003c/var\u003e: the time within which a response must be\n returned, using an integer value or an\n [absolute duration value](/sdk/gcloud/reference/topic/datetimes)---for\n example `1m20s` which is 1 minute, 20 seconds. If you\n use an integer value, the unit is assumed to be seconds. The value you\n specify must be less than 60 minutes.\n\n | **Note:** When you update your service with the new timeout value, a new revision is created.\n\nYou can also set the request timeout during\n[deployment](/sdk/gcloud/reference/run/deploy) using the command: \n\n```bash\ngcloud run deploy --image IMAGE_URL --timeout=TIMEOUT\n```\n\nReplace the following:\n\n- \u003cvar translate=\"no\"\u003eIMAGE_URL\u003c/var\u003e: a reference to the container image, for example, `us-docker.pkg.dev/cloudrun/container/hello:latest`. If you use Artifact Registry, the [repository](/artifact-registry/docs/repositories/create-repos#docker) \u003cvar translate=\"no\"\u003eREPO_NAME\u003c/var\u003e must already be created. The URL follows the format of \u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e`-docker.pkg.dev/`\u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e`/`\u003cvar translate=\"no\"\u003eREPO_NAME\u003c/var\u003e`/`\u003cvar translate=\"no\"\u003ePATH\u003c/var\u003e`:`\u003cvar translate=\"no\"\u003eTAG\u003c/var\u003e .\n- \u003cvar translate=\"no\"\u003eTIMEOUT\u003c/var\u003e: the time within which a response must be returned, using an integer value or a duration value---for example, `1m20s` which is 1 minute, 20 seconds. If you use an integer value, the unit is assumed to be seconds. The value you specify must be less than 60 minutes.\n\n### YAML\n\n1. If you are creating a new service, skip this step.\n If you are updating an existing service, download its [YAML configuration](/run/docs/reference/yaml/v1):\n\n ```bash\n gcloud run services describe SERVICE --format export \u003e service.yaml\n ```\n2. Update the `timeoutSeconds` attribute:\n\n ```yaml\n apiVersion: serving.knative.dev/v1\n kind: Service\n metadata:\n name: SERVICE\n spec:\n template:\n spec:\n containers:\n - image: IMAGE\n timeoutSeconds: VALUE\n ```\n\n Replace the following:\n - \u003cvar translate=\"no\"\u003eSERVICE\u003c/var\u003e: the name of your Cloud Run service.\n - \u003cvar translate=\"no\"\u003eIMAGE_URL\u003c/var\u003e: a reference to the container image, for example, `us-docker.pkg.dev/cloudrun/container/hello:latest`. If you use Artifact Registry, the [repository](/artifact-registry/docs/repositories/create-repos#docker) \u003cvar translate=\"no\"\u003eREPO_NAME\u003c/var\u003e must already be created. The URL follows the format of \u003cvar translate=\"no\"\u003eLOCATION\u003c/var\u003e`-docker.pkg.dev/`\u003cvar translate=\"no\"\u003ePROJECT_ID\u003c/var\u003e`/`\u003cvar translate=\"no\"\u003eREPO_NAME\u003c/var\u003e`/`\u003cvar translate=\"no\"\u003ePATH\u003c/var\u003e`:`\u003cvar translate=\"no\"\u003eTAG\u003c/var\u003e .\n - \u003cvar translate=\"no\"\u003eVALUE\u003c/var\u003e: the chosen timeout, in seconds.\n3. Create or update the service using the following command:\n\n ```bash\n gcloud run services replace service.yaml\n ```\n\n### Terraform\n\n\nTo learn how to apply or remove a Terraform configuration, see\n[Basic Terraform commands](/docs/terraform/basic-commands).\nAdd the following to a [`google_cloud_run_v2_service`](https://registry.terraform.io/providers/hashicorp/google/latest/docs/resources/cloud_run_v2_service) resource in your Terraform configuration: \n\n\u003cbr /\u003e\n\n resource \"google_cloud_run_v2_service\" \"default\" {\n name = \"cloudrun-service-request-timeout\"\n location = \"us-central1\"\n\n deletion_protection = false # set to \"true\" in production\n\n template {\n containers {\n image = \"us-docker.pkg.dev/cloudrun/container/hello\"\n }\n # Timeout\n timeout = \"300s\"\n }\n }\n\nReplace `300s` with your service's desired request timeout.\n\nView request timeout settings\n-----------------------------\n\nTo view the current request timeout settings for your\nCloud Run service: \n\n### Console\n\n1. In the Google Cloud console, go to Cloud Run:\n\n [Go to Cloud Run](https://console.cloud.google.com/run)\n2. Click the service you are interested in to open the **Service details**\n page.\n\n3. Click the **Revisions** tab.\n\n4. In the details panel at the right, the request timeout setting\n is listed under the **Container** tab.\n\n### gcloud\n\n1. Use the following command:\n\n ```bash\n gcloud run services describe SERVICE\n ```\n2. Locate the request timeout setting in the returned\n configuration."]]