Configura el tiempo de espera de las tareas (trabajos)

De forma predeterminada, cada tarea se ejecuta durante 10 minutos como máximo: puedes cambiar a un tiempo más corto o a un máximo de 24 horas.

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.

En el caso de 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á.

Las unidades especifican una duración. Por ejemplo, 10m5s es de diez minutos y cinco segundos. Si no especificas una unidad, se supone que los segundos son la unidad. Por ejemplo, el valor 10 es de 10 segundos.

Observa y controla eventos de mantenimiento

Los trabajos pueden someterse 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 ningún cambio en tu contenedor para controlar 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)
        }
    }()
 }
 

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:

Consola

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

    Ir a Cloud Run

  2. Si quieres configurar un nuevo trabajo, haz clic en la pestaña Trabajos y completa la página de configuración de trabajo inicial como desees. Si quieres configurar un trabajo existente, haz clic en el trabajo y, luego, 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

    • Especifica la duración máxima de las tareas de trabajo en el trabajo actual y especifica la cantidad de tiempo y las unidades: por ejemplo, 10m5s es de diez minutos y cinco segundos.
  5. Haz clic en Crear o Actualizar.

Línea de comandos

  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

Descarga y visualiza la configuración del trabajo existente mediante el comando gcloud run jobs describe --format export, que genera resultados limpios en formato YAML. Luego, modifica los campos que se describen a continuación y sube el YAML modificado mediante el comando gcloud run jobs replace. Asegúrate de modificar los campos tal como se indica en la documentación.

  1. Para ver y descargar la configuración, ejecuta el siguiente comando:

    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 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.

    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"
  launch_stage = "BETA"

  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:

Consola

  1. En la consola de Google Cloud, ve a la página 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.

Línea de comandos

  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.