Configura el tiempo de espera de las tareas (trabajos)

De forma predeterminada, cada tarea se ejecuta durante 10 minutos como máximo: puedes cambiar esto a un tiempo más corto o a un máximo de 168 horas (7 días). La compatibilidad con tiempos de espera superiores a 24 horas está disponible en la versión preliminar.

Establece el tiempo de espera de las tareas como se describe en esta página. No hay un tiempo de espera explícito en la ejecución de un trabajo: cuando se completan todas las tareas, la ejecución del trabajo finaliza.

Las unidades especifican una duración. Puedes especificar la duración del tiempo de espera como un número entero en segundos, minutos u horas. Por ejemplo, para establecer la duración del tiempo de espera como 10 minutos y 5 segundos, especifica el valor como 605 segundos.

Si tu trabajo tiene habilitados los reintentos, la configuración del tiempo de espera se aplica a cada intento de una tarea. Si el intento de tarea no se completa en este tiempo, se detendrá. Cuanto más tiempo se ejecute una tarea, es más probable que se produzcan problemas que la hagan fallar, como fallas de dependencia descendente, errores de memoria insuficiente o problemas de infraestructura. Recomendamos habilitar las reintentos para todos los trabajos, pero especialmente para los que tienen tareas de larga duración.

Observa y controla eventos de mantenimiento

Es posible que los trabajos se sometan a eventos de mantenimiento de forma periódica. Durante un evento de mantenimiento, las tareas en curso se migran de la máquina actual a una diferente. Este proceso de migración conserva todo el estado de la tarea. Sin embargo, hay una breve pausa en el procesamiento mientras se migra la tarea.

Los eventos de mantenimiento son transparentes. No es necesario que realices cambios en tu contenedor para controlar los eventos de mantenimiento. Ten en cuenta que cada vez que se inicia y finaliza una tarea, Cloud Run imprime un mensaje de registro.

Sin embargo, si deseas supervisar o controlar los eventos de mantenimiento de una manera específica, puedes detectar el indicador SIGTSTP, que se envía 10 segundos antes de que se migre una tarea. Después de la migración, la tarea recibe una señal SIGCONT de inmediato después de reiniciar la tarea.

La siguiente muestra de Go es una función que detecta estas señales y, luego, imprime una entrada de registro:

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)
        }
    }()
 }
 

Roles obligatorios

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

Para obtener una lista de los roles y los permisos de IAM asociados con Cloud Run, consulta Roles de IAM de Cloud Run y Permisos de IAM de Cloud Run. Si tu trabajo de Cloud Run interactúa con las APIs de Google Cloud, 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.

Establece el tiempo de espera de las tareas

A fin de especificar el tiempo de espera de la tarea para un trabajo de Cloud Run, sigue estos pasos:

Console

  1. En la consola de Google Cloud, ve a la página de trabajos de Cloud Run:

    Ir a Cloud Run

  2. Haz clic en Implementar contenedor y selecciona Trabajo para completar la página de configuración de trabajo inicial. Si quieres configurar un trabajo existente, selecciona el trabajo y, luego, haz clic en Editar.

  3. Haz clic en Contenedor, variables y secretos, conexiones y seguridad para expandir la página de propiedades del trabajo.

  4. Haz clic en la pestaña General.

    imagen

    • En el campo Tiempo de espera de la tarea, especifica la duración máxima de las tareas de trabajo en el trabajo actual y selecciona una Unidad de tiempo. Solo puedes especificar la duración del tiempo de espera como un valor de número entero en segundos, minutos u horas. Por ejemplo, para establecer una duración de 10 minutos y 5 segundos, en el campo Tiempo de espera de la tarea, especifica 605 y selecciona la Unidad de tiempo como segundos.
  5. Haz clic en Crear o Actualizar.

gcloud

  1. Para un trabajo que estés creando, sigue estos pasos:

    gcloud run jobs create JOB_NAME --image IMAGE_URL --task-timeout TIMEOUT

    Reemplazar

    • JOB_NAME por el nombre de tu trabajo.
    • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/job:latest
    • TIMEOUT por la duración máxima de las tareas de trabajo, mediante la especificación de la cantidad de tiempo y las unidades: por ejemplo, 10m5s es de diez minutos y cinco segundos.
  2. Para un trabajo que estás actualizando:

    gcloud run jobs update JOB_NAME --task-timeout TIMEOUT

YAML

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

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Actualiza el atributo timeoutSeconds::

    apiVersion: run.googleapis.com/v1
    kind: Job
    metadata:
      name: JOB
    spec:
      template:
        spec:
          template:
            spec:
              containers:
              - image: IMAGE
              timeoutSeconds: TIMEOUT

    Reemplaza lo siguiente:

    • JOB_NAME por el nombre de tu trabajo.
    • IMAGE_URL por una referencia a la imagen del contenedor, como us-docker.pkg.dev/cloudrun/container/job:latest
    • TIMEOUT por la duración máxima de las tareas de trabajo, y especifica la cantidad de tiempo y las unidades Solo puedes especificar la hora como un valor de número entero en segundos, minutos u horas. Por ejemplo, para establecer una duración de 10 minutos y 5 segundos, especifica 605s.

    También puedes especificar más opciones de configuración, como variables de entorno o límites de memoria.

  3. Actualiza la configuración del trabajo existente:

    gcloud run jobs replace job.yaml

Terraform

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

Si quieres especificar el tiempo de espera de la tarea para un trabajo de Cloud Run, usa el recurso google_cloud_run_v2_job y aplica el siguiente fragmento a tu archivo main.tf:

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"
      }
    }
  }
}

Visualiza la configuración del tiempo de espera de las tareas

Para ver la configuración actual del tiempo de espera de las tareas de tu trabajo de Cloud Run, sigue estos pasos:

Console

  1. En la consola de Google Cloud, ve a la página de trabajos de Cloud Run:

    Ir a Trabajos de Cloud Run

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

  3. Haz clic en la pestaña Configuración.

  4. Ubica la configuración del tiempo de espera de las tareas en los detalles de configuración.

gcloud

  1. Usa el siguiente comando:

    gcloud run jobs describe JOB_NAME
  2. Busca la configuración de tiempo de espera de las tareas en la configuración que se muestra.

# Copyright 2020 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

source "https://rubygems.org"

gem "functions_framework", "~> 1.4"