Configurar el tiempo de espera de las solicitudes

Aprende a definir el tiempo en el que tus servicios de Knative Serving deben devolver una respuesta a una solicitud. Si no se devuelve ninguna respuesta en el plazo especificado, la solicitud finaliza y se devuelve el error 504.

Límites de tiempo de espera

El límite de tiempo de espera máximo varía en función de la versión de tu clúster de GKE.

Versión de GKE Límite predeterminado Límite de tiempo de espera máximo
0.16.0-gke.1 y versiones posteriores 300 segundos 24 horas
0.15.0-gke.3 y versiones anteriores 300 segundos 900 segundos

Además de cambiar el tiempo de espera de la solicitud de Knative Serving, debes comprobar si tu framework de lenguaje tiene su propio ajuste de tiempo de espera de la solicitud, que también debes actualizar.

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 CLI de Google Cloud o un archivo YAML al desplegar un servicio nuevo o actualizar uno que ya tengas y desplegar una revisión:

Consola

  1. Ve a Knative Serving en la Google Cloud consola:

    Ir a Knative serving

  2. Haga clic en Crear servicio si va a configurar un servicio nuevo que va a implementar. Si va a configurar un servicio que ya tiene, haga clic en él y, a continuación, en Editar y desplegar nueva revisión.

  3. En Configuración avanzada, haga clic en Contenedor.

  4. En el campo Tiempo de espera de la solicitud, introduce el valor de tiempo de espera que quieras usar. El valor que especifique debe ser inferior al límite de tiempo de espera de la versión de GKE del clúster.

  5. Haz clic en Siguiente para ir a la siguiente sección.

  6. En la sección Configurar la activación del servicio, selecciona la conectividad que quieras usar para invocar el servicio.

  7. Haz clic en Crear para desplegar la imagen en Knative Serving y espera a que se complete el despliegue.

Línea de comandos

  • En los servicios que ya tengas, define el tiempo de espera de las solicitudes ejecutando el comando gcloud run services update con el parámetro --timeout:

    gcloud run services update SERVICE --timeout TIMEOUT

    Sustituye:

    • SERVICE con el nombre de tu servicio.
    • TIMEOUT con el tiempo que quieras, usando un valor entero en segundos o un valor de duración absoluta, como 1m20s, que equivale a 1 minuto y 20 segundos. El valor que especifiques debe ser inferior al límite de tiempo de espera de la versión de GKE del clúster. Especifica 0 para asignar el valor predeterminado al tiempo de espera.
  • En el caso de los servicios nuevos, define el tiempo de espera de la solicitud ejecutando el comando gcloud run deploy con el parámetro --timeout:

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

    Sustituye:

    • SERVICE con el nombre de tu servicio.
    • IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo, gcr.io/cloudrun/hello.
    • TIMEOUT con el tiempo que quieras, usando un valor entero en segundos o un valor de duración absoluta, como 1m20s, que equivale a 1 minuto y 20 segundos. El valor que especifiques debe ser inferior al límite de tiempo de espera de la versión de GKE del clúster. Especifica 0 para asignar el valor predeterminado al tiempo de espera.

YAML

Puedes descargar la configuración de un servicio en un archivo YAML con el comando gcloud run services describe mediante la marca --format=export. A continuación, puedes modificar ese archivo YAML e implementar los cambios con el comando gcloud run services replace. Debe asegurarse de modificar solo los atributos especificados.

  1. Descarga la configuración de tu servicio en un archivo llamado service.yaml en el espacio de trabajo local:

    gcloud run services describe SERVICE --format export > service.yaml

    Sustituye SERVICE por el nombre de tu servicio de Knative.

  2. En su archivo local, actualice el atributo timeoutSeconds:

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

    Sustituye:

    • SERVICE con el nombre de tu servicio de Knative
    • IMAGE_URL con una referencia a la imagen del contenedor, por ejemplo, gcr.io/cloudrun/hello.
    • TIMEOUT con el tiempo de espera que quieras, en segundos.
  3. Sustituye el servicio por su nueva configuración con el siguiente comando:

    gcloud run services replace service.yaml