Utilisation de tâches CRON dans CloudFlare Workers via Wrangler – CloudSavvy IT

Photo of author

By pierre



Cloudflare Workers s’est imposé comme une solution exceptionnelle et performante pour le traitement informatique sans serveur. L’ajout récent des Tâches CRON offre désormais la possibilité d’exécuter des Cloudflare Workers selon une programmation spécifique, sans dépendre de déclencheurs externes. Dans cet article, nous allons examiner la configuration d’un nouveau script, son déploiement sur Cloudflare, et enfin, comment le déclencher à l’aide d’une tâche CRON.

Introduction à Wrangler

Avant de pouvoir déployer un nouveau script sur Cloudflare, il est nécessaire d’installer et de configurer l’outil de ligne de commande Wrangler, qui permettra de gérer le déploiement de notre script.

Installation de l’outil en ligne de commande Wrangler

Pour faciliter le déploiement de sites, Cloudflare a développé l’outil en ligne de commande Wrangler. Son installation peut être réalisée via NPM (gestionnaire de paquets NodeJS) ou Cargo (gestionnaire de paquets du langage Rust).

Installation via NPM

npm i @cloudflare/wrangler -g

Installation via Cargo

cargo install wrangler

cargo install wrangler --features sys-openssl

Connexion à Wrangler et création d’un projet

Nous allons commencer par nous connecter à Cloudflare en utilisant Wrangler. Pour cela, nous utilisons la nouvelle fonctionnalité wrangler login. Cette action ouvrira une page web. Si vous êtes déjà authentifié sur Cloudflare, l’authentification sera très rapide. Dans le cas contraire, connectez-vous, et Wrangler configurera automatiquement le jeton API.

wrangler login

Comme on peut le voir à l’emplacement de configuration, un fichier .toml contient maintenant votre jeton API pour rendre toutes les opérations ultérieures transparentes. Ce fichier est situé dans le répertoire personnel de l’utilisateur, dans le sous-répertoire .wranglerconfigdefault.toml.

Création d’un script Cloudflare Worker pour interroger WordPress CRON

Dans cet article, nous allons développer un script Cloudflare Worker simple qui interrogera le fichier wp-cron.php suivant une planification. Le fonctionnement de WordPress est tel que lors d’une requête de page, il tente d’exécuter toutes les tâches CRON internes définies. Ainsi, les tâches ne sont exécutées qu’occasionnellement sur un site à faible trafic, ce qui peut être problématique pour un site à fort trafic. Parfois, cela n’est pas faisable sur certains hébergements. Il est donc possible de définir le même paramètre, mais de déclencher le système CRON de WordPress en externe.

Il est nécessaire de désactiver la configuration CRON par défaut de WordPress en ajoutant la ligne suivante dans le fichier wp-config.php. Le changement prend effet dès l’enregistrement du fichier.

define('DISABLE_WP_CRON', true);

En général, les scripts Worker ne sont déclenchés que lorsqu’ils sont appelés. Dans notre cas, nous programmerons un déclencheur CRON pour qu’il s’exécute toutes les cinq minutes.

Les Cloudflare Workers planifiés par des déclencheurs CRON s’exécuteront sur des machines sous-utilisées, afin d’optimiser l’utilisation des ressources.

Mise en place de la configuration du déclencheur CRON

Les déclencheurs CRON de Cloudflare Worker utilisent la syntaxe Unix CRON, ce qui la rend familière et documentée. Vous pouvez même définir plusieurs déclencheurs CRON pour un seul script de worker, avec une limite actuelle de trois. La syntaxe de configuration ressemble au code ci-dessous, qui présente un déclencheur qui s’exécute toutes les 5 minutes.

[triggers]
crons = ["*/5 * * * *"]

Maintenant que nous avons défini la configuration du déclencheur, comment déployer notre script dans l’environnement Cloudflare ?

Déploiement du script CRON WordPress et programmation de la tâche CRON

Pour générer tous les fichiers nécessaires et configurer un worker JavaScript simple, nous pouvons utiliser la commande « generate » intégrée à Wrangler. Cette action créera un répertoire nommé wordpress-cron qui contiendra tout le nécessaire pour déployer un worker basé sur JavaScript.

# Génération d'un squelette de Cloudflare Worker JavaScript simple
wrangler generate wordpress-cron

Ensuite, modifiez le fichier index.js généré. Dans ce script, nous allons simplement appeler le fichier wp-cron.php avec le paramètre doing_wp_cron. Lorsque ce script sera appelé, toutes les tâches CRON qui doivent s’exécuter le feront.

addEventListener("fetch", event => {
  return event.respondWith(
    fetch("<https://mysite.com/wp-cron.php?doing_wp_cron>")
  )
})

Enfin, vous devrez mettre à jour votre fichier wrangler.toml pour y inclure les informations requises. Mettez à jour le fichier de configuration en incluant votre acccount_id et zone_id. Pour trouver ces valeurs, rendez-vous sur le tableau de bord principal de votre site, puis faites défiler vers le bas jusqu’à la section API. L’ID de compte et l’ID de zone seront indiqués à cet endroit.

name = "wordpress-cron"
type = "javascript"
account_id = "account_id"
workers_dev = false
route = "*mysite.com/wordpress-cron*"
zone_id = "zone_id"
[triggers]
crons = ["*/5 * * * *"]

Cette route correspondra à n’importe quel protocole, http ou https, et à tout paramètre ou chemin supplémentaire au-delà de la section wordpress-cron. N’hésitez pas à modifier cette configuration selon vos besoins. En pratique, cela permet de déclencher manuellement le script, mais le déclencheur CRON se chargera de la plupart des exécutions.

Enfin, nous devons déployer ce worker, ce qui peut être effectué en utilisant la commande « publish » comme indiqué ci-dessous.

wrangler publish

Une fois le script déployé et exécuté pour la première fois, vous pouvez consulter les statistiques et les informations sur la page du tableau de bord Cloudflare Workers.

Conclusion

Cet exemple simple de l’utilisation de déclencheurs CRON avec Cloudflare Workers ne fait qu’effleurer les possibilités. N’hésitez pas à explorer Cloudflare Workers et à découvrir comment cette technologie sans serveur peut s’intégrer dans votre flux de travail actuel !