Format et fuseau horaire de la tâche Cron

Les tâches Cron sont planifiées à intervalles réguliers, spécifiés à l'aide d'un format basé sur unix-cron. Vous pouvez définir une programmation afin que votre tâche s'exécute plusieurs fois par jour ou certains jours ou mois spécifiques. (Bien que nous ne recommandons plus son utilisation, l'ancienne syntaxe Cron App Engine reste compatible avec les tâches existantes.)

Format de la tâche Cron

Vous pouvez utiliser la console Google Cloud, la Google Cloud CLI ou l'API REST Cloud Scheduler pour définir votre programmation.

Une planification est définie à l'aide du format de chaîne unix-cron (* * * * *), qui est un ensemble de cinq champs sur une ligne indiquant le moment où la tâche doit être exécutée.

Les champs temporels présentent le format et les valeurs possibles suivants. Ils doivent respecter l'ordre suivant:

|------------------------------- Minute (0-59)
|     |------------------------- Hour (0-23)
|     |     |------------------- Day of the month (1-31)
|     |     |     |------------- Month (1-12; or JAN to DEC)
|     |     |     |     |------- Day of the week (0-6; or SUN to SAT; or 7 for Sunday)
|     |     |     |     |
|     |     |     |     |
*     *     *     *     *
Champ Format des valeurs valides
Minute 0-59
Heure 0-23
jour du mois 1-31
Mois 1-12 (ou JAN. à DÉC.)
Jour de la semaine 0-6 (ou SUN au SAT ; ou 7 pour dimanche)
  • Minute (Minute) : indique le délai en minutes après le début de l'heure d'exécution de votre tâche. Par exemple, si la minute est définie sur 0, la tâche s'exécute en haut de l'heure (car cela correspond à 0 minute après l'heure). Ainsi, si l'heure est 8h, la tâche s'exécute à 8h.

  • Hour (Heure) : indique le nombre d'heures après minuit de la tâche (arrondi à l'heure la plus proche, car les minutes restantes sont indiquées dans le champ minute). 0 correspond à minuit et 12 à midi. Par exemple, si l'heure est définie sur 0, la tâche s'exécute à minuit (ce qui correspond à 0 heure après minuit).

  • Jour du mois:indique la date calendaire du mois. Par exemple, 1 pour le premier jour du mois. Cloud Scheduler ne prend pas en charge L pour désigner le dernier jour du mois.

  • Month (Mois) : indique le mois. Spécifiez le numéro du mois ou les trois premières lettres du nom du mois en majuscules. Par exemple, 1 pour janvier ou équivalent, JAN.

  • Jour de la semaine:indique le jour de la semaine. lundi est 1, mardi est 2, et ainsi de suite. 0 ou 7 peut indiquer dimanche. Indiquez le jour de la semaine soit par un nombre, soit par les trois premières lettres du nom du jour de la semaine en majuscules (par exemple, SUN pour dimanche).

    • Ce champ est évalué comme un OR inclusif avec le champ day of the month, sauf si l'un de ces champs est marqué comme non restreint par l'astérisque (*). Par exemple, si le jour du mois est défini sur 1 et que le jour de la semaine est défini sur SAT, la tâche s'exécute le premier jour du mois et tous les samedis du mois, même si le premier jour du mois n'est pas un samedi. Si le jour de la semaine n'est pas restreint (défini sur *), la tâche n'est exécutée que le premier jour du mois.

Correspondance avec toutes les valeurs

Pour représenter toutes les valeurs d'un champ, utilisez l'astérisque: *. Lorsqu'un champ est défini sur l'astérisque, il correspond à toutes les valeurs valides de ce champ chaque fois que les autres conditions du champ sont remplies. On parle parfois de laisser le champ unrestricted (sans restriction) lorsqu'un champ est défini sur l'astérisque, car il n'est pas limité à une valeur spécifique.

Voici deux exemples dans lesquels le champ des minutes n'est pas restreint:

  • * 0 1 1 1: la tâche s'exécute toutes les minutes à minuit, le 1er janvier et les lundis.
  • * * * * *: la tâche s'exécute toutes les minutes (toutes les heures, tous les jours du mois, tous les mois et tous les jours de la semaine, car chacun de ces champs n'est pas non plus restreint).

L'astérisque équivaut à un cas particulier d'une plage, où celle-ci commence à la première valeur valide du champ et se termine à la dernière valeur valide du champ (par exemple, 0-59 pour le champ des minutes).

Correspondance avec une plage

Pour représenter une plage de valeurs, spécifiez vos valeurs de début et de fin, séparées par un trait d'union (-). N'incluez pas d'espaces dans la plage. Les plages sont inclusives. Le premier nombre doit être inférieur au second. Si vous utilisez des noms abrégés pour le mois ou la semaine (par exemple, JAN au lieu de 1 pour le premier mois de l'année), la première valeur doit apparaître plus tôt dans le mois ou la semaine que la seconde.

Les exemples équivalents suivants s'exécutent à minuit les lundis, mardis, mercredis, jeudis et vendredis (pour tous les mois):

  • 0 0 * * 1-5
  • 0 0 * * MON-FRI

Correspondance avec une liste

Les listes peuvent contenir n'importe quelle valeur valide pour le champ, y compris des plages. Spécifiez vos valeurs, en les séparant par une virgule (,). N'incluez pas d'espaces dans la liste.

Exemples :

  • 0 0,12 * * *: la tâche s'exécute à minuit et midi.
  • 0-5,30-35 * * * *: la tâche s'exécute au cours des cinq premières minutes de chaque demi-heure (en haut de l'heure et à la demi-heure).

Ignorer des valeurs dans une plage

Vous pouvez ignorer les valeurs d'une plage en spécifiant la vitesse à laquelle vous souhaitez parcourir la plage. On parle parfois d'utilisation d'une fonction de pas (ou valeur d'étape ou expression de débit). Pour ce faire, spécifiez la plage, suivie de la barre oblique (/) et du taux auquel vous souhaitez ignorer la plage.

Vous pouvez utiliser l'astérisque (*) pour indiquer la plage de toutes les valeurs du champ. Lorsque vous utilisez l'astérisque, la première valeur de la plage est: 0 pour les champs de minute, d'heure et de jour de la semaine (dimanche), et 1 pour les champs de jour du mois et de mois.

La valeur de pas ne peut pas être supérieure à la plus grande valeur possible pour le champ. L'étape par défaut est 1. La fonction de pas /1 revient donc à ne pas utiliser de fonction de pas du tout.

Exemples de plages utilisant des fonctions d'étape:

  • */2: il s'agit d'une fonction d'étape valide pour n'importe quel champ. Pour le champ des minutes, il correspond à 0, 2, 4, ... , 58. Pour l'heure, elle correspond à 0, 2, 4, ... , 22. Pour le jour du mois, elle correspond à 1, 3, 5, ... , 31 (pour un mois de 31 jours). Pour le mois, elle correspond à 1, 3, 5, ... , 11. Pour le jour de la semaine, il correspond à 0, 2, 4, 6.

  • 0-12/2: il s'agit d'une fonction de pas valide pour les champs de minutes et d'heures. Elle renvoie les valeurs 0, 2, 4, ... , 12.

Exemples de planifications avec des fonctions d'étape:

  • */2 * * * *: la tâche s'exécute toutes les deux minutes.

  • 0 0-12/2 * * *: la tâche s'exécute toutes les deux heures, toutes les heures. La première course est à minuit. La dernière course est à midi.

Exemples de calendrier

Le tableau suivant présente quelques exemples de planifications de job Cron et leur description:

Planification Format de la tâche Cron Explication
Toutes les minutes * * * * * S'exécute à la minute. Par exemple, 9:00, 9:01, 02:02, etc.
Toutes les heures 0 * * * * S'exécute toutes les heures. Par exemple, 9h, 10h, 11h, etc.
Tous les jours 0 0 * * * Exécution tous les jours à minuit (au format 24 heures).
Tous les jours de la semaine
(Lun-Ven)
Les méthodes suivantes sont équivalentes:
  • 0 0 * * 1-5
  • 0 0 * * MON-FRI
Exécution à 0h00 (00h00 au format 24 heures) les lundis, mardis, mercredis, jeudis et vendredis.
Toutes les semaines Les méthodes suivantes sont équivalentes:
  • 0 0 * * 0
  • 0 0 * * 7
  • 0 0 * * SUN
Exécution le dimanche à minuit (au format 24 heures)
Tous les mois 0 0 1 * * Exécution à minuit (00h00 au format 24 heures) le premier jour du mois.
Tous les trimestres Les méthodes suivantes sont équivalentes:
  • 0 0 1 1,4,7,10 *
  • 0 0 1 JAN,APR,JUL,OCT *
Exécution à 0h (00h00 au format 24 heures) le premier jour du trimestre, selon un calendrier trimestriel standard : 1er janvier, 1er avril, 1er juillet et 1er octobre.
Tous les ans Les méthodes suivantes sont équivalentes:
  • 0 0 1 1 *
  • 0 0 1 JAN *
Exécution à minuit (00h00 au format 24 heures) le premier jour du premier mois de l'année (1er janvier).

Fuseau horaire

Vous pouvez sélectionner le fuseau horaire pour évaluer la planification dans la console Google Cloud (sur la page Créer une tâche, sélectionnez un fuseau horaire dans la liste) ou via l'option gcloud --time-zone lors de la création de la tâche. Le fuseau horaire par défaut est Etc/UTC.

Pour certains fuseaux horaires, le passage à l'heure d'été peut entraîner l'exécution ou une absence de tâches inattendues. En effet, Cloud Scheduler s'exécute à l'heure d'exécution. Dans les cas où une heure peut se produire deux fois (par exemple, lorsque les horloges reviennent en arrière) et que votre tâche est planifiée à ce moment-là, votre tâche planifiée peut observer des anomalies d'exécution.

Si votre tâche nécessite une cadence très spécifique, vous pouvez choisir un fuseau horaire qui ne respecte pas l'heure d'été. Plus précisément, UTC est recommandé pour Cloud Scheduler afin d'éviter complètement le problème.