web-dev-qa-db-fra.com

Les fonctions de cloud pour Firebase se déclenchent à l'heure?

Je cherche un moyen de planifier les fonctions de cloud pour Firebase ou, en d'autres termes, de les déclencher à une heure précise.

83
ahsan

Mise à jour 2019-04-18

Il existe maintenant un moyen très simple de déployer du code planifié sur Cloud Functions via Firebase.

Vous pouvez soit utiliser une syntaxe de texte simple:

export scheduledFunctionPlainEnglish =
functions.pubsub.schedule('every 5 minutes').onRun((context) => {
    console.log('This will be run every 5 minutes!');
})

Ou le format de table cron plus flexible:

export scheduledFunctionCrontab =
functions.pubsub.schedule('5 11 * * *').onRun((context) => {
    console.log('This will be run every day at 11:05 AM UTC!');
});

Pour en savoir plus à ce sujet, voir:

Notez que votre projet doit être sur un plan Blaze pour que cela fonctionne, alors je laisse les options alternatives ci-dessous pour référence.

Réponse originale ci-dessous ...


Il n'y a pas encore de déclencheur de type runat/cron intégré.

Pour le moment, la meilleure option consiste à utiliser un service externe pour déclencher une fonction HTTP périodiquement. Voir cet exemple dans le repo functions-samples pour plus d'informations. Ou utilisez le Google Cloud Scheduler récemment introduit pour déclencher des fonctions de cloud via PubSub ou HTTPS:

enter image description here

Je recommande également vivement de lire cet article sur le blog de Firebase: Comment planifier des tâches (Cron) avec des fonctions de cloud pour Firebase et cette vidéo: Fonctions de timing Cloud pour Firebase utilisant un déclencheur et un cron HTTP .

Ce dernier lien utilise cron-job.org pour déclencher des fonctions d'informatique en nuage et fonctionne pour les projets faisant l'objet d'un plan gratuit. Notez que cela permet à quiconque d'appeler votre fonction sans autorisation. Vous pouvez donc inclure un mécanisme de protection contre les abus dans le code lui-même.

88
Frank van Puffelen

Ce que vous pouvez faire, c'est créer une instance AppEngine déclenchée par le travail cron et émise vers PubSub. J'ai écrit un article de blog spécifiquement à ce sujet, vous voudrez peut-être jeter un coup d'oeil:

https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html

10
mhaligowski