Définir le délai avant expiration de la tâche (jobs)

Par défaut, chaque tâche s'exécute pendant 10 minutes au maximum. Vous pouvez définir une durée plus courte ou plus longue dans la limite de 24 heures.

Vous pouvez définir le délai avant expiration d'une tâche comme décrit sur cette page. Il n'y a pas de délai explicite pour l'exécution d'un job : lorsque toutes les tâches sont terminées, l'exécution du job est terminée.

En cas de nouvelles tentatives, le paramètre de délai avant expiration s'applique à chaque tentative d'une opération. Si la tentative d'exécution de l'opération ne se termine pas dans ce délai, elle sera arrêtée.

Les unités spécifient une durée. Par exemple, 10m5s correspond à 10 minutes et cinq secondes. Si vous ne spécifiez pas d'unité, les secondes sont considérées comme l'unité. Par exemple, la valeur 10 est de 10 secondes.

Observer et gérer les événements de maintenance

Les jobs peuvent régulièrement subir des événements de maintenance. Lors d'un événement de maintenance, toutes les tâches en cours sont migrées de la machine actuelle vers une autre machine. Ce processus de migration conserve l'état complet de la tâche. Toutefois, le traitement est brièvement suspendu pendant le traitement de la tâche.

Les événements de maintenance sont transparents : vous n'avez pas besoin de modifier votre conteneur pour les gérer. Notez qu'à chaque fois qu'une tâche démarre et termine sa migration, Cloud Run affiche un message de journal.

Toutefois, si vous souhaitez surveiller ou gérer des événements de maintenance d'une manière spécifique, vous pouvez intercepter le signal SIGTSTP, qui est envoyé 10 secondes avant la migration d'une tâche. Après la migration, la tâche reçoit un signal SIGCONT immédiatement après son redémarrage.

L'exemple Go suivant est une fonction qui détecte ces signaux et affiche une entrée de journal :

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

Définir le délai avant expiration d'une tâche

Pour spécifier le délai avant expiration d'une tâche Cloud Run, procédez comme suit :

Console

  1. Dans la console Google Cloud, accédez à la page des jobs Cloud Run :

    Accédez à Cloud Run

  2. Si vous configurez une nouvelle tâche, cliquez sur l'onglet Tâches et remplissez la page des paramètres initiaux de la tâche selon vos besoins. Si vous configurez une tâche existante, cliquez sur celle-ci, puis sur Modifier.

  3. Cliquez sur Conteneur, variables et secrets, connexions, sécurité pour développer la page des propriétés de la tâche.

  4. Cliquez sur l'onglet Général.

    image

    • Spécifiez la durée maximale des tâches du job en cours, en spécifiant à la fois la durée et les unités. Par exemple, 10m5s est de 10 minutes et cinq secondes.
  5. Cliquez sur Créer ou Mettre à jour.

Ligne de commande

  1. Pour une tâche que vous êtes en train de créer :

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

    Remplacer

    • JOB_NAME par le nom de votre tâche.
    • IMAGE_URL par une référence à l'image de conteneur, par exemple us-docker.pkg.dev/cloudrun/container/job:latest.
    • TIMEOUT par la durée maximale des tâches du job, en spécifiant la durée et les unités. Par exemple, 10m5s correspond à dix minutes et cinq secondes.
  2. Pour une tâche en cours de mise à jour :

    gcloud run jobs update JOB_NAME --task-timeout TIMEOUT

YAML

Téléchargez et affichez la configuration de tâche existante à l'aide de la commande gcloud run jobs describe --format export, qui renvoie les résultats nettoyés au format YAML. Modifiez ensuite les champs décrits ci-dessous et importez le fichier YAML modifié à l'aide de la commande gcloud run jobs replace. Veillez à ne modifier que les champs indiqués.

  1. Pour afficher et télécharger la configuration :

    gcloud run jobs describe JOB_NAME --format export > job.yaml
  2. Mettez à jour l'attribut timeoutSeconds: :

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

    Remplacez TIMEOUT par la durée maximale des tâches du job, en spécifiant la durée et les unités. Par exemple, 10m5s correspond à dix minutes et cinq secondes.

    Vous pouvez également spécifier d'autres éléments de configuration, tels que des variables d'environnement ou des limites de mémoire.

  3. Mettez à jour la configuration de tâche existante :

    gcloud run jobs replace job.yaml

Terraform

Pour savoir comment appliquer ou supprimer une configuration Terraform, consultez la page Commandes Terraform de base.

Pour spécifier le délai avant expiration d'un job Cloud Run, utilisez la ressource google_cloud_run_v2_job et appliquez l'extrait suivant à votre fichier 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"
      }
    }
  }
}

Afficher les paramètres du délai avant expiration de la tâche

Pour afficher les paramètres actuels d'expiration des opérations pour votre tâche Cloud Run, procédez comme suit :

Console

  1. Dans la console Google Cloud, accédez à la page des jobs Cloud Run :

    Accéder aux tâches Cloud Run

  2. Cliquez sur la tâche qui vous intéresse pour ouvrir la page Informations sur la tâche.

  3. Cliquez sur l'onglet Configuration.

  4. Recherchez le paramètre de délai avant expiration de la tâche dans les détails de configuration.

Command line

  1. Exécutez la commande suivante :

    gcloud run jobs describe JOB_NAME
  2. Recherchez le paramètre de délai avant expiration de la tâche dans la configuration renvoyée.