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

Cloudflare Workers s’est révélé être une solution unique et puissante pour l’informatique sans serveur. Avec le nouvel ajout de Emplois CRON, vous pouvez désormais exécuter Cloudflare Workers selon un calendrier sans compter sur un déclencheur externe. Dans cet article, nous explorons comment configurer un nouveau script, déployer ce script sur Cloudflare et finalement déclencher ce script avec une tâche CRON.

Premiers pas avec Wrangler

Avant de pouvoir déployer un nouveau script sur Cloudflare, nous devons installer et configurer l’outil de ligne de commande Wrangler pour déployer notre nouveau script de travail.

Installation de l’outil de ligne de commande Wrangler

Pour créer un déploiement de site, Cloudflare a créé le Outil de ligne de commande Wrangler. Wrangler nécessite une installation via NPM (gestionnaire de packages NodeJS) ou Cargo (gestionnaire de packages de langue Rust).

Installation de NPM

npm i @cloudflare/wrangler -g

Cargaison

cargo install wrangler

cargo install wrangler --features sys-openssl

Connexion Wrangler et création de site

Tout d’abord, nous allons nous connecter à Cloudflare en utilisant Wrangler. Pour ce faire, nous utilisons le nouveau wrangler login fonctionnalité. Cela demandera l’ouverture d’une page Web et si vous êtes déjà authentifié dans Cloudflare, l’authentification se produira très rapidement. Sinon, connectez-vous et Wrangler configurera automatiquement le jeton API.

wrangler login

  Comment regarder Disney + à distance avec des amis à l'aide de GroupWatch

Comme vous pouvez le voir à partir de l’emplacement de configuration, il y a un .toml fichier qui contient maintenant votre jeton API pour rendre toutes les opérations ultérieures transparentes. Ce fichier est contenu dans le répertoire personnel de l’utilisateur et stocké dans le sous-répertoire .wranglerconfigdefault.toml.

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

Dans cet article, nous allons créer un simple Cloudflare Worker qui interrogera simplement le wp-cron.php fichier selon un calendrier. Le fonctionnement de WordPress est que sur une demande de page, il tentera d’exécuter toutes les tâches CRON internes définies. Cela signifie que les travaux ne sont exécutés qu’occasionnellement avec un site à faible volume et peuvent être préjudiciables à un site à volume élevé. Cela peut ne pas toujours être faisable sur certains hébergements, vous pouvez donc définir le même paramètre mais déclencher en externe le système WordPress CRON.

Nous devons désactiver la configuration par défaut de WordPress CRON en utilisant la configuration suivante dans wp-config.php. Cela prend effet au moment où le fichier est enregistré.

define('DISABLE_WP_CRON', true);

En règle générale, les scripts de travail ne sont déclenchés que lorsqu’ils sont appelés. Dans ce cas, nous programmerons un déclencheur CRON pour l’exécuter toutes les cinq minutes.

  Qu'est-ce que le cache DNS et comment le mettre à jour

Les Cloudflare Workers planifiés par les déclencheurs CRON s’exécuteront sur des machines sous-utilisées pour utiliser les ressources de la manière la plus efficace possible.

Création de la configuration du déclencheur CRON

Déclencheurs CRON Cloudflare Worker utilisez la syntaxe Unix CRON familière. Cela le rend immédiatement familier et avec une multitude de ressources d’apprentissage derrière lui. Vous pouvez même définir plusieurs déclencheurs CRON pour un seul script de travail, jusqu’à une limite actuelle de trois. La syntaxe de configuration ressemble au code ci-dessous qui montre un déclencheur s’exécutant toutes les 5 minutes.

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

Maintenant que nous avons notre configuration de déclencheur, comment pouvons-nous tout mettre en place pour déployer notre script dans l’environnement Cloudflare?

Déploiement du script CRON WordPress et planification du travail CRON

Pour créer tous les fichiers nécessaires et configurer un simple worker javascript, nous pouvons utiliser la commande generate intégrée de wrangler. Cela créera un répertoire nommé, wordpress-cron qui contient tout le nécessaire pour déployer un worker basé sur javascript.

# Generate simple javascript Cloudflare Worker scaffold
wrangler generate wordpress-cron

Ensuite, modifiez le index.js fichier généré. Dans le script, nous appellerons simplement le wp-cron.php fichier avec le paramètre de doing_wp_cron. Lorsqu’il est appelé, tous les travaux CRON qui doivent être exécutés le seront.

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

Enfin, vous devrez mettre à jour votre wrangler.toml fichier pour inclure les informations nécessaires. Mettez à jour le fichier de configuration pour inclure votre acccount_id et zone_id. Pour obtenir ces valeurs, recherchez le tableau de bord principal de votre site et faites défiler vers le bas pour trouver la section API. L’ID de compte et l’ID de zone y seront situés.

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à du wordpress-cron section. N’hésitez pas à faire ce que vous voulez. En réalité, cela vous permet de déclencher manuellement le script, mais le déclencheur CRON le gérera la plupart du temps.

  Comment sauvegarder votre iPhone sur un lecteur externe sous Windows 10

Enfin, nous devons déployer ce worker, ce que vous pouvez faire à l’aide de 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 voir les statistiques et les informations sur la page du tableau de bord Cloudflare Workers.

Conclusion

Cet exemple simple d’utilisation de déclencheurs CRON avec Cloudflare Workers ne fait qu’effleurer la surface des possibilités. Commencez à explorer Cloudflare Workers et comment cette technologie sans serveur peut s’intégrer dans votre flux de travail dès aujourd’hui!