Scheduler
Imaginez que vous gérez une boutique de vêtements en ligne. Lorsqu'un client achète le dernier exemplaire, le stock de ce produit tombe à 0. Pour le vendre à nouveau, il faut passer une commande auprès du fournisseur. Disons que le fournisseur dispose, sur Internet, d'un guichet qui reçoit les commandes : en l'appelant à une adresse définie, la commande est reçue. Disons aussi que la tâche consistant à repérer les produits dont le stock est à 0 et à appeler ce guichet, vous l'avez déjà réalisée sous forme de Script. Il reste malgré tout un problème. Il faut quelqu'un pour déclencher ce Script une fois par jour.
Le Scheduler remplace cette personne. Une fois que vous avez défini « exécute ce Script tous les jours à la même heure », WEEGLOO l'exécute de lui-même chaque fois que cette heure arrive. Personne n'a besoin d'ouvrir l'écran.
On peut le comparer au réglage d'un réveil. Une fois que vous avez défini l'heure de la sonnerie, il sonne ensuite de lui-même chaque jour à cette heure-là. Cette page examine, à travers l'exemple de la « commande de réapprovisionnement » de la boutique de vêtements, ce que l'on définit dans un Scheduler, comment écrire l'heure, et avec les autorisations de qui il s'exécute.
Trois choses à définir
Il n'y a pas grand-chose à définir dans un Scheduler.
- Nom : il sert à reconnaître le Scheduler dans la liste par la suite. Exemple :
Commande de réapprovisionnement. - Le Script à exécuter : vous choisissez un seul Script à exécuter le moment venu. Un Scheduler n'exécute qu'un seul Script.
- Quand l'exécuter : traité plus bas dans Comment écrire le moment d'exécution.
À cela s'ajoute un interrupteur pour l'activer et le désactiver. Une fois désactivé, il reste enregistré tel quel et seule son exécution n'a pas lieu. Lorsqu'il faut suspendre momentanément l'exécution, comme pendant une période de fermeture du fournisseur, vous n'avez pas besoin de le supprimer.
Le Script à exécuter ne peut pas être changé par la suite. Pour faire tourner un autre Script, créez un nouveau Scheduler. Le nom, l'heure et l'activation peuvent être modifiés à tout moment.
Comment écrire le moment d'exécution
L'heure s'écrit en cinq cases. De gauche à droite, ce sont la minute, l'heure, le jour, le mois et le jour de la semaine, et * signifie « tout ».
minute heure jour mois jour de la semaine
0 9 * * * → tous les jours à 9 h pileVoici les formes les plus courantes.
| Valeur à saisir | Quand il s'exécute |
|---|---|
0 0 * * * | Tous les jours à 0 h pile |
30 9 * * * | Tous les jours à 9 h 30 |
0 * * * * | À chaque heure pile |
*/10 * * * * | Toutes les 10 minutes |
0 0 * * 1 | Tous les lundis à 0 h pile |
0 0 1 * * | Le 1er de chaque mois à 0 h pile |
L'heure est lue en temps universel (UTC). Ce n'est pas l'heure locale : vous décidez donc à quelle heure locale l'exécution doit avoir lieu, puis vous calculez l'écart correspondant avant de l'écrire. Dans une région en avance de 9 heures sur le temps universel, 9 heures du matin sur place s'écrit 0 0 * * *. La commande de réapprovisionnement s'exécute avec cette valeur, c'est-à-dire à 0 h en temps universel.
Pour une heure comportant un jour du mois ou un jour de la semaine, ce calcul peut décaler jusqu'à la date : vérifiez donc une nouvelle fois.
Une valeur qui ne s'exécuterait jamais n'est pas enregistrée. Par exemple, 0 0 30 2 * désigne le 30 février, un jour qui n'arrive jamais ; si vous tentez de l'enregistrer, vous recevez une réponse vous demandant de vérifier de nouveau la valeur.
Avec les autorisations de qui il s'exécute
Lorsqu'un Scheduler exécute un Script, cette exécution est traitée comme si elle avait été effectuée par la personne qui a créé ce Scheduler. Le fait, pour le Script de commande de réapprovisionnement, de lire les produits et d'appeler le fournisseur, se produit lui aussi au titre du créateur.
C'est pourquoi, pour le créer ou le modifier, deux autorisations sont nécessaires ensemble.
- Le rôle (SpaceRole) doit disposer de l'autorisation de configurer un Scheduler.
- Vous devez posséder l'autorisation d'exécuter le Script que ce Scheduler fera tourner.
Le second point est vérifié non seulement à la création, mais aussi à la modification. En effet, changer l'heure d'exécution revient à décider quand ce Script s'exécutera, et réactiver ce qui était désactivé revient à lancer l'exécution.
Si son créateur perd ensuite cette autorisation, le Scheduler se désactive. Si le responsable quitte l'équipe ou si son rôle est restreint, WEEGLOO le constate à l'heure d'exécution suivante et coupe l'interrupteur sans exécuter. Même si l'autorisation revient, l'interrupteur ne se remet pas en marche tout seul : vous devez donc le réactiver vous-même.
Consulter l'historique d'exécution
Chaque fois que le Scheduler s'exécute, un enregistrement est conservé. Il indique si cette exécution a réussi ou échoué. C'est par cet enregistrement que vous vérifiez si la commande est bien partie la nuit dernière.
La liste indique, pour chaque exécution, son heure d'exécution et son résultat. Cliquez sur une exécution qui a échoué en cours de route, et vous voyez la raison telle quelle dans la zone d'erreur de l'écran de détail. Elle apparaît accompagnée du temps écoulé, et ce texte vous permet de distinguer si le guichet du fournisseur n'a pas répondu ou s'il s'agissait d'un autre problème.
L'enregistrement d'une exécution réussie disparaît au bout d'une heure, celui d'une exécution en échec au bout de trois jours. Les échecs restent plus longtemps parce que ce sont eux que l'on vient examiner par la suite. Pour une valeur qui doit être conservée plus longtemps, comme l'historique des commandes, enregistrez-la comme Content à l'intérieur du Script.
Un échec n'arrête pas le Scheduler. Si l'échec vient de ce que le guichet du fournisseur n'a momentanément pas répondu, seule cette exécution-là est consignée comme un échec, et il s'exécute de nouveau à l'heure suivante.
En quoi cela diffère de Webhook
Tous deux exécutent un Script sans que personne n'ait à le déclencher. Ce qui les distingue, c'est ce qui provoque l'exécution.
- Le Webhook s'exécute lorsqu'un événement survient. Lorsqu'un produit est enregistré, lorsqu'un contenu est publié.
- Le Scheduler s'exécute lorsque l'heure arrive. Chaque jour à cette heure-là, même s'il ne se passe rien.
À première vue, la commande de réapprovisionnement semble relever du Webhook. Puisque l'on peut commander à l'instant précis où le stock tombe à 0. Mais si, dans la même journée, le stock d'un même produit tombe à 0, revient à la suite d'un retour, puis retombe à 0, une commande part à chaque fois. En parcourant le tout une fois par jour, un produit ne donne lieu qu'à une seule commande. Une tâche qui doit se faire « en une fois, groupée » et non « à chaque occurrence » : c'est là la place du Scheduler.
À l'inverse, remplir la description à l'instant où un produit est enregistré n'a aucune raison d'être différé : c'est donc un Webhook.
À savoir
- Le nombre est limité. Le nombre de Scheduler qu'une même Organization peut posséder est fixé selon la formule tarifaire (Free 1, Basic 5, Pro 30, Enterprise illimité). Une fois la limite atteinte, vous ne pouvez plus en créer de nouveau ; supprimer un Scheduler inutilisé libère de nouveau une place.
- Le nombre d'exécutions est partagé avec Script. Comme le travail d'un Scheduler consiste à exécuter un Script, chaque exécution consomme une unité du quota d'exécutions de Script de votre formule tarifaire. Il n'existe pas de limite distincte propre au Scheduler. Une fois ce quota épuisé, tout Scheduler dont l'heure arrive ensuite ne s'exécute pas et se désactive. Dans ce cas, la raison pour laquelle il n'a pas pu démarrer reste consignée dans l'historique d'exécution. Il ne se réactive pas automatiquement au mois suivant : vous devez donc le réactiver vous-même.
- Les exécutions manquées ne sont pas rattrapées. Si une journée a été sautée, par exemple pour une maintenance, il ne s'exécute pas deux fois le lendemain. Il reprend à partir de l'heure suivante.
- Un Script qu'un Scheduler utilise ne peut pas être supprimé. C'est le cas même si ce Scheduler est désactivé. Supprimez d'abord ce Scheduler, puis supprimez le Script.
Gérer dans le studio de contenu
Un Scheduler se crée et se gère depuis l'écran Scheduler du studio de contenu. La liste affiche, une ligne par Scheduler créé, son nom, le nom du Script qu'il exécute, son expression cron, la Prochaine exécution, son état, sa date de modification et l'auteur de la modification.

L'écran indique aussi à quelle horloge correspond chacune des deux colonnes. En tête de la colonne qui contient l'expression cron figure UTC, et en tête de la colonne Prochaine exécution figure le fuseau horaire de la personne qui regarde, sous une forme comme UTC±N. Vous voyez ainsi sur une même ligne la valeur enregistrée et l'heure qu'elle représente dans votre propre horaire. Dans un fuseau horaire en retard sur le temps universel, la Prochaine exécution peut apparaître la veille.
Un nouveau Scheduler se crée avec le bouton Créer, en haut à droite de la liste.
- Cliquez sur le bouton Créer, en haut à droite de la liste.
- Saisissez
Commande de réapprovisionnementdans le champ du nom. - Gardez Actif en position activée. Une fois désactivé, le Scheduler est bien enregistré, mais il ne s'exécute pas.
- Dans Script à exécuter, choisissez le Script de commande de réapprovisionnement.
- Dans Planification, choisissez Saisie manuelle.
- Saisissez
0 0 * * *dans les cinq cases. - Cliquez sur le bouton Créer, en haut à droite, pour enregistrer.
L'écran montre aussi immédiatement quand l'expression saisie s'exécutera réellement. Accompagné de l'indication qu'une expression saisie à la main est enregistrée en temps universel (UTC), un aperçu de la valeur cron qui sera enregistrée et de l'heure de la prochaine exécution apparaît.

Lorsque vous cliquez sur un Scheduler dans la liste, l'écran de détail de ce Scheduler s'ouvre. Cet écran de détail se divise en deux onglets, Log d'exécution et Paramètres, et à l'ouverture c'est Log d'exécution qui s'affiche. L'onglet Log d'exécution présente une ligne par exécution effectuée jusqu'ici, et chaque ligne montre l'heure d'exécution (Exécuté le), le Résultat et l'ID de requête qui désigne cette exécution. La colonne Résultat permet de n'afficher que les exécutions réussies ou que celles en échec, et Actualiser Les Logs relit la liste jusqu'aux exécutions qui viennent d'avoir lieu.

Lorsque vous cliquez sur une exécution, le détail de cette exécution s'ouvre. On y trouve le Résultat accompagné du Code de statut, du temps écoulé (Durée) et de l'identité sous laquelle cette exécution a tourné (Run as) ; s'il s'agit d'une exécution en échec, la raison apparaît telle quelle dans la zone Erreur. En haut se trouvent des étiquettes indiquant de quel Scheduler relève cette exécution et quel Script elle a fait tourner, accompagnées d'un lien vers ce Script et du lien Voir dans le log du Script, qui montre la même exécution dans les enregistrements du côté Script.

Et ensuite
- Script : aborde la manière de créer le Script que le Scheduler exécutera, et d'y intégrer l'action d'appeler un service externe comme le guichet du fournisseur.
- Webhook : aborde la manière de déclencher l'exécution non pas à une heure définie, mais lorsqu'un changement défini se produit.
- Rôles et permissions : aborde la manière de placer dans un rôle l'autorisation de configurer un Scheduler et l'autorisation d'exécuter un Script.
