Configura el tiempo de espera de solicitudes para los servicios

La configuración de tiempo de espera de las solicitudes de Cloud Run te permite definir el tiempo máximo que tiene un servicio para mostrar una respuesta. Si tu servicio no responde dentro de este límite, Cloud Run cierra la conexión de red y muestra un error HTTP 504.

Cerrar la conexión no finaliza la instancia del contenedor. El contenedor puede seguir procesando la solicitud anulada, lo que puede interferir con el manejo de otras solicitudes. Para evitar los tiempos de espera, establece un tiempo de espera superior al tiempo de ejecución esperado o haz un seguimiento del tiempo de ejecución restante para realizar una limpieza y mostrar una respuesta antes.

Período de tiempo de espera para los servicios

El tiempo de espera se establece de forma predeterminada en 5 minutos (300 segundos) y se puede extender hasta 60 minutos (3600 segundos).

Cuando activas tu servicio desde eventos de Eventarc, suscripciones de envío de Pub/Sub o Cloud Scheduler, se aplica el tiempo de espera de estos servicios.

Puedes cambiar esta configuración cuando implementas una imagen de contenedor o actualizas la configuración del servicio.

Además de cambiar el tiempo de espera de las solicitudes de Cloud Run, también debes verificar el framework del lenguaje para ver si tiene su propia configuración de tiempo de espera de solicitudes que también debes actualizar. Es posible que algunos clientes del servicio de Cloud Run también impongan un tiempo de espera más restrictivo.

Roles obligatorios

Para obtener los permisos que necesitas para configurar y, luego, implementar los servicios de Cloud Run, pídele a tu administrador que te otorgue los siguientes roles de IAM:

Si implementas un servicio o una función desde el código fuente, también debes tener roles adicionales otorgados en tu proyecto y en la cuenta de servicio de Cloud Build.

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta los roles de IAM de Cloud Run y los permisos de IAM de Cloud Run. Si tu servicio de Cloud Run interactúa con Cloud de Confiance las APIs, como las bibliotecas cliente de Cloud, consulta la guía de configuración de identidades del servicio. Para obtener más información acerca de cómo otorgar roles, consulta Permisos de implementación y Administra el acceso.

Configura y actualiza el tiempo de espera de las solicitudes

Cualquier cambio en la configuración conlleva la creación de una revisión nueva. Las revisiones posteriores también adoptarán esta configuración de manera automática, a menos que realices actualizaciones explícitas para cambiarla.

Puedes configurar el tiempo de espera de las solicitudes mediante la Cloud de Confiance consola, la línea de comandos de gcloud CLI o un archivo YAML cuando creas un servicio nuevo o implementas una revisión nueva.

Console

  1. En la consola Cloud de Confiance by S3NS , ve a Cloud Run:

    Ir a Cloud Run

  2. Selecciona Servicios en el menú de navegación de Cloud Run y haz clic en Implementar contenedor para configurar un servicio nuevo. Si quieres configurar un servicio existente, haz clic en el servicio.

  3. Si configuras un servicio nuevo, completa la página de configuración del servicio inicial como desees y haz clic en Contenedores, herramientas de redes, seguridad para expandir la página de configuración del servicio.

  4. Si quieres configurar un servicio existente, haz clic en la pestaña Escalamiento.

  5. En Solicitudes, en el campo Tiempo de espera de la solicitud, ingresa el valor de tiempo de espera que deseas usar en segundos. Usa valores que varían de 1 a 3600 segundos.

  6. Haz clic en Crear para un servicio nuevo. Haz clic en Ver diferencias y volver a implementar y, luego, en Implementar cambios para un servicio existente.

gcloud

Puedes actualizar el tiempo de espera de la solicitud para una revisión determinada en cualquier momento mediante el siguiente comando:

gcloud run services update SERVICE --timeout=TIMEOUT

Reemplaza lo siguiente:

  • SERVICE: el nombre del servicio
  • TIMEOUT: el tiempo en el que se debe mostrar una respuesta, con un valor de número entero o un valor de duración absoluta—por ejemplo 1m20s (1 minuto, 20 segundos) Si usas un valor de número entero, se supone que la unidad será en segundos. El valor que especifiques debe ser inferior a 60 minutos.

También puedes configurar el tiempo de espera de las solicitudes durante la implementación mediante el siguiente comando:

gcloud run deploy --image IMAGE_URL --timeout=TIMEOUT

Reemplaza lo siguiente:

  • IMAGE_URL: una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
  • TIMEOUT: el tiempo en el que se debe mostrar una respuesta, con un valor de número entero o de duración, por ejemplo, 1m20s (1 minuto, 20 segundos) Si usas un valor de número entero, se supone que la unidad será en segundos. El valor que especifiques debe ser inferior a 60 minutos.

YAML

  1. Si creas un servicio nuevo, omite este paso. Si actualizas un servicio existente, descarga su configuración de YAML:

    gcloud run services describe SERVICE --format export > service.yaml
  2. Actualiza el atributo timeoutSeconds:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        spec:
          containers:
          - image: IMAGE
          timeoutSeconds: VALUE

    Reemplaza lo siguiente:

    • SERVICE: el nombre del servicio de Cloud Run
    • IMAGE_URL: una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/hello:latest Si usas Artifact Registry, el repositorio REPO_NAME debe estar creado. La URL sigue el formato de LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG .
    • VALUE: el tiempo de espera elegido, en segundos
  3. Crea o actualiza el servicio con el siguiente comando:

    gcloud run services replace service.yaml

    El comando gcloud run services replace usa de forma predeterminada el archivo service.yaml si está presente.

Terraform

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Agrega lo siguiente a un google_cloud_run_v2_service recurso en la configuración de Terraform:

resource "google_cloud_run_v2_service" "default" {
  name     = "cloudrun-service-request-timeout"
  location = "us-central1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
    }
    # Timeout
    timeout = "300s"
  }
}

Reemplaza 300s por el tiempo de espera de la solicitud elegido para tu servicio.

Visualiza la configuración de tiempo de espera de solicitudes

Para ver la configuración actual de tiempo de espera de solicitudes de tu servicio de Cloud Run, sigue estos pasos:

Console

  1. En la Cloud de Confiance by S3NS consola, ve a la página Servicios de Cloud Run:

    Ir a Cloud Run

  2. Haz clic en el servicio que te interesa para abrir la página Detalles del servicio.

  3. Haz clic en la pestaña Escalamiento para ver la configuración.

gcloud

  1. Usa el siguiente comando:

    gcloud run services describe SERVICE
  2. Busca la configuración de tiempo de espera de solicitudes en la configuración que se muestra.