Les tâches Cron sont planifiées à intervalles réguliers (ces intervalles sont spécifiés à l'aide d'un format basé sur unix-cron). Vous pouvez définir un calendrier afin que votre tâche s'exécute plusieurs fois par jour, uniquement certains jours ou uniquement certains mois. (Bien que nous ne recommandions plus son utilisation, l'ancienne version Syntaxe Cron d'App Engine est toujours compatible avec les jobs existants.)
Format de la tâche Cron
Vous pouvez utiliser la console Google Cloud, la CLI Google Cloud ou l'API REST Cloud Scheduler pour définir votre planification.
Un calendrier est défini à l'aide du format de chaîne unix-cron (* * * * *
), un ensemble de cinq champs sur une ligne qui indique quand la tâche doit être exécutée.
Les champs de temps ont le format et les valeurs possibles suivants, et doivent suivre cet ordre:
|------------------------------- 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 à DEC) |
Jour de la semaine | 0-6 (ou SUN à SAT, ou 7 pour dimanche) |
Minute:indique le temps écoulé après la fin de l'heure à laquelle votre tâche s'exécute, en minutes. Par exemple, si la minute est définie sur
0
, la tâche s'exécute à l'heure (car il s'agit de 0 minute après l'heure). Par conséquent, si l'heure est 8h00, la tâche s'exécute à 8h00.Heure:indique le nombre d'heures écoulées après minuit pendant lesquelles votre tâche s'exécute (arrondi à l'heure la plus proche, car les minutes restantes sont indiquées dans le champ
minute
). Minuit correspond à0
et midi à12
. Par exemple, si l'heure est définie sur0
, la tâche s'exécute à minuit (car il s'agit de 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 n'accepte pasL
pour indiquer le dernier jour du mois.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, ouJAN
.Jour de la semaine:indique le jour de la semaine. Par exemple, le lundi est
1
et le mardi est2
.0
ou7
peuvent indiquer le dimanche. Spécifiez le jour de la semaine par numéro ou par les trois premières lettres du nom du jour de la semaine en majuscules (par exemple,SUN
pour le dimanche).- Ce champ est évalué comme un
OR
inclusif avec le champday of the month
, sauf si l'un de ces champs est marqué comme non limité par l'astérisque (*
). Par exemple, si le jour du mois est défini sur1
et le jour de la semaine surSAT
, 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 limité (défini sur*
), la tâche ne s'exécute que le premier jour du mois.
- Ce champ est évalué comme un
Correspondant à 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 pour ce champ chaque fois que les autres conditions du champ sont remplies. Définir un champ sur l'astérisque est parfois appelé "laisser le champ sans restriction", car il n'est pas limité à une valeur spécifique.
Voici deux exemples dans lesquels le champ de minutes n'est pas limité:
* 0 1 1 1
: la tâche s'exécute chaque minute de minuit le 1er janvier et les lundis.* * * * *
: la tâche s'exécute toutes les minutes (de chaque heure, de chaque jour du mois, de chaque mois, de chaque jour de la semaine, car chacun de ces champs n'est pas limité non plus).
L'astérisque équivaut à un cas particulier d'une plage, où la plage commence à la première valeur valide pour le champ et se termine à la dernière valeur valide pour le champ (par exemple, 0-59
pour le champ de minutes).
Correspondre à une plage
Pour faire correspondre 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 incluses. Le premier nombre doit être inférieur au second. Si vous utilisez des noms abrégés pour le mois ou le jour de la semaine (par exemple, JAN
au lieu de 1
pour le premier mois de l'année), la première valeur doit être antérieure à la seconde au cours du mois ou de la semaine.
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
Correspondre à une liste
Les listes peuvent contenir n'importe quelle valeur valide pour le champ, y compris des intervalles.
Spécifiez vos valeurs, séparées 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 dans les cinq premières minutes de chaque demi-heure (à l'heure et à la demi-heure).
Ignorer des valeurs dans une plage
Vous pouvez ignorer des valeurs dans une plage en spécifiant un taux d'incrémentation de la plage. On parle parfois d'utilisation d'une fonction par pas (ou valeur par pas ou expression de taux). Pour ce faire, spécifiez la plage, suivie de la barre oblique (/
) et de la fréquence à laquelle 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 d'incrément ne doit pas être supérieure à la valeur la plus élevée possible pour le champ.
L'étape par défaut est 1. Par conséquent, la fonction d'étape /1
est identique à l'absence de fonction d'étape.
Exemples de plages utilisant des fonctions de pas:
*/2
: fonction par étapes valide pour n'importe quel champ. Pour le champ "minutes", il correspond à 0, 2, 4, etc. , 58. Pour l'heure, il correspond à 0, 2, 4, etc. , jusqu'à 22. Pour le jour du mois, il correspond à 1, 3, 5, etc. , 31 (pour un mois de 31 jours). Pour le mois, il correspond à 1, 3, 5, etc. , jusqu'à 11. Pour le jour de la semaine, il correspond à 0, 2, 4 et 6.0-12/2
: fonction par incréments valide pour les champs de minutes et d'heures. Il correspond à 0, 2, 4, etc. , 12.
Exemples de planifications utilisant des fonctions en escalier:
*/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, à l'heure. La première exécution a lieu à minuit. La dernière exécution a lieu à 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 près. Par exemple, 9h00, 9h01, 9h02, etc. |
Toutes les heures | 0 * * * * |
S'exécute à l'heure. Par exemple, 9h00, 10h00, 11h00, etc. |
Tous les jours | 0 0 * * * |
Exécution à minuit (00h00 au format 24 heures) tous les jours. |
Tous les jours de la semaine (du lundi au vendredi) |
Les expressions suivantes sont équivalentes:
|
S'exécute à minuit (00h00 au format 24 heures) les lundis, mardis, mercredis, jeudis et vendredis. |
Toutes les semaines | Les expressions suivantes sont équivalentes:
|
Exécution le dimanche à minuit (00:00 au format 24 heures). |
Tous les mois | 0 0 1 * * |
S'exécute à minuit (00:00 au format 24 heures) le premier jour du mois. |
Tous les trimestres | Les expressions suivantes sont équivalentes:
|
S'exécute à minuit (00:00 au format 24 heures) le premier jour du trimestre, pour un calendrier trimestriel standard : 1er janvier, 1er avril, 1er juillet et 1er octobre. |
Tous les ans | Les expressions suivantes sont équivalentes:
|
S'exécute à minuit (00:00 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 à utiliser pour évaluer la planification dans la console Google Cloud (sur la page Create a job (Créer une tâche), sélectionnez un Fuseau horaire dans la liste) ou via l'indicateur gcloud
--time-zone
lorsque vous créez la tâche.
La valeur de ce champ doit correspondre à l'abréviation du fuseau horaire utilisée dans la base de données tz.
Le fuseau horaire par défaut est UTC
.
Pour certains fuseaux horaires, l'heure d'été peut entraîner l'exécution ou la non-exécution inattendue de tâches. En effet, Cloud Scheduler s'exécute à l'heure de la montre. Dans les cas où une même heure peut se produire deux fois (comme quand l'heure recule) et que votre tâche est programmée pour s'exécuter à ce moment, elle peut présenter des anomalies d'exécution.
Si votre travail nécessite une cadence très spécifique, vous pouvez envisager de choisir un fuseau horaire qui n'observe pas l'heure d'été. Plus précisément, la zone UTC est recommandée pour Cloud Scheduler. Elle permet de contourner entièrement le problème.