Fonctions de planification


Si vous souhaitez planifier l'exécution de fonctions à des heures spécifiées, utilisez le gestionnaire onSchedule pour créer un sujet Pub/Sub qui utilise Cloud Scheduler pour déclencher des événements sur ce sujet.

Avant que tu commences

Pour utiliser cette solution dans votre projet Firebase, votre projet doit être sur le plan tarifaire Blaze. S'il ne fait pas déjà partie du forfait Blaze, mettez à niveau votre plan tarifaire .

Bien qu'une facturation soit requise, vous pouvez vous attendre à ce que le coût global soit gérable, car chaque tâche Cloud Scheduler coûte 0,10 $ (USD) par mois et il y a une allocation de trois tâches par compte Google, sans frais. Utilisez le calculateur de prix Blaze pour générer une estimation des coûts basée sur votre utilisation prévue.

Les API Pub/Sub et Cloud Scheduler doivent être activées pour votre projet. Ceux-ci devraient déjà être activés pour la plupart des projets Firebase ; vous pouvez vérifier dans la console Google Cloud Platform .

Écrire une fonction planifiée

Dans Cloud Functions pour Firebase, la logique de planification réside dans le code de vos fonctions, sans exigence particulière en matière de temps de déploiement. Pour créer une fonction planifiée, utilisez functions.pubsub.schedule('your schedule').onRun((context)) . Par exemple, pour exécuter une fonction toutes les cinq minutes avec la syntaxe cron.yaml d'App Engine , procédez comme suit :

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

La syntaxe Unix Crontab et App Engine sont prises en charge par Cloud Scheduler. Par exemple, pour utiliser Crontab pour sélectionner un fuseau horaire spécifique dans lequel exécuter une fonction planifiée, procédez comme suit :

exports.scheduledFunctionCrontab = functions.pubsub.schedule('5 11 * * *')
  .timeZone('America/New_York') // Users can choose timezone - default is America/Los_Angeles
  .onRun((context) => {
  console.log('This will be run every day at 11:05 AM Eastern!');
  return null;
});

La valeur de timeZone doit être un nom de fuseau horaire provenant de la base de données tz . Consultez la référence Cloud Scheduler pour plus d'informations sur les propriétés prises en charge.

Déployer une fonction planifiée

Lorsque vous déployez une fonction planifiée, la tâche de planification et le sujet pub/sub associés sont créés automatiquement. La CLI Firebase fait écho au nom du sujet et vous pouvez afficher la tâche et le sujet dans la console GCP . Le sujet est nommé selon la convention suivante :

firebase-scheduled- function_name - region

Par exemple:

firebase-scheduled-scheduledFunctionCrontab-us-east1.