Je recherche un moyen de planifier des fonctions Cloud pour Firebase ou en d'autres termes de les déclencher à une heure précise.
Je recherche un moyen de planifier des fonctions Cloud pour Firebase ou en d'autres termes de les déclencher à une heure précise.
Mise à jour 18/04/2019
Il existe désormais 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, consultez:
Notez que votre projet doit être sur un plan Blaze pour que cela fonctionne, donc je laisse les options alternatives ci-dessous pour référence.
Si vous souhaitez planifier un appel unique d'une fonction cloud sur un délai à partir de l'exécution d'un autre déclencheur, vous pouvez utiliser Cloud Tasks pour le configurer. Lisez cet article pour un exemple détaillé de la façon dont cela peut fonctionner.
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 est d'utiliser un service externe pour déclencher périodiquement une fonction HTTP. Pour plus d'informations, consultez cet exemple dans le référentiel functions-samples . Ou utilisez le Google Cloud Scheduler récemment introduit pour déclencher Cloud Functions via PubSub ou HTTPS:
Je recommande également vivement de lire cet article sur le blog Firebase: Comment planifier des tâches (Cron) avec Cloud Functions pour Firebase et cette vidéo: Timing Cloud Functions pour Firebase à l'aide d'un déclencheur HTTP et Cron .
Ce dernier lien utilise cron-job.org pour déclencher Cloud Functions et fonctionne pour les projets qui sont sur un plan gratuit. Notez que cela permet à quiconque d'appeler votre fonction sans autorisation, vous pouvez donc vouloir inclure un mécanisme de protection contre les abus dans le code lui-même.
cron-job.org
Jen parle dans le billet de blog est gratuit.Each Cloud Scheduler job costs $0.10 (USD) per month
supposant que "tâche" ne signifie pas chaque fois que l'objet planifié se déclenche, mais le coût par minuterie? c'est-à-dire qu'un travail qui s'exécute toutes les minutes ne coûte que 0,10 $? (à l'exclusion des fonctions cloud qu'il appelle).Ce que vous pouvez faire, c'est lancer une instance AppEngine qui est déclenchée par une tâche cron et émise vers PubSub. J'ai écrit un article de blog spécifiquement à ce sujet, vous voudrez peut-être jeter un coup d'œil:
https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html
la source