Définir le délai avant expiration des tâches pour les 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 168 heures (7 jours). La prise en charge des délais d'inactivité supérieurs à 24 heures est disponible en version Preview.

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.

Les unités spécifient une durée. Vous pouvez spécifier la durée du délai avant expiration sous la forme d'un nombre entier en secondes, minutes ou heures. Par exemple, pour définir la durée du délai avant expiration sur 10 minutes et 5 secondes, spécifiez la valeur 605 secondes.

Si les nouvelles tentatives sont activées pour votre job, le paramètre de délai avant expiration s'applique à chaque tentative d'une tâche. Si la tentative d'exécution de l'opération ne se termine pas dans ce délai, elle sera arrêtée. Plus un job s'exécute longtemps, plus il est susceptible de rencontrer des problèmes qui entraînent son échec, tels que des échecs de dépendance en aval, des erreurs de mémoire insuffisante ou des problèmes d'infrastructure. Nous vous recommandons d'activer les tentatives pour toutes les tâches, mais surtout pour celles de longue durée.

Événements de maintenance

Les jobs sont régulièrement soumis à 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. Le traitement est brièvement suspendu pendant le traitement de la tâche.

Le processus de migration préserve l'état de la tâche, à une exception notable près : les connexions sortantes au réseau VPC sont interrompues lors des opérations de maintenance. Nous vous recommandons d'utiliser des bibliothèques clientes pouvant gérer les réinitialisations occasionnelles des connexions.

Cloud Run affiche un message de journal à chaque fois qu'une tâche démarre et termine sa migration.

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

Rôles requis

Pour obtenir les autorisations nécessaires pour configurer des jobs Cloud Run, demandez à votre administrateur de vous accorder les rôles IAM suivants :

Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre job Cloud Run communique avec des APIGoogle Cloud , telles que des bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.

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. Sélectionnez Jobs dans le menu, puis cliquez sur Deploy container (Déployer un conteneur) pour remplir la page des paramètres initiaux du job. Si vous configurez un job existant, sélectionnez-le, puis cliquez sur Modifier.

  3. Cliquez sur Conteneur(s), Volumes, Connexions, Sécurité pour développer la page des propriétés du job.

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

    image

    • Dans le champ Délai avant expiration de la tâche, spécifiez la durée maximale des tâches du job en cours, puis sélectionnez une unité de temps. Vous ne pouvez spécifier la durée du délai avant expiration que sous forme de valeur entière en secondes, minutes ou heures. Par exemple, pour définir une durée de 10 minutes et 5 secondes, dans le champ Délai d'expiration de la tâche, spécifiez 605 et sélectionnez seconde comme Unité de temps.
  5. Cliquez sur Créer ou Mettre à jour.

gcloud

  1. Pour un job 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 job.
    • 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

  1. Si vous créez un job, ignorez cette étape. Si vous mettez à jour un job existant, téléchargez sa configuration YAML :

    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 :

    • JOB_NAME par le nom de votre job.
    • 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. Vous ne pouvez spécifier le temps que sous la forme d'une valeur entière en secondes, minutes ou heures. Par exemple, pour définir une durée de 10 minutes et 5 secondes, spécifiez 605.

    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 job existante :

    gcloud run jobs replace job.yaml

Terraform

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

Ajoutez les éléments suivants à une ressource google_cloud_run_v2_job dans votre configuration Terraform :

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

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 jobs Cloud Run

  2. Cliquez sur le job qui vous intéresse pour ouvrir la page Informations sur le job.

  3. Cliquez sur Afficher et modifier la configuration du job.

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

gcloud

  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.