Fonctions de planification

Si vous souhaitez programmer des fonctions pour qu'elles s'exécutent à des heures précises, utilisez functions.pubsub.schedule().onRun() Cette méthode pratique crée un sujet Pub/Sub et utilise Cloud Scheduler pour déclencher des événements sur ce sujet, garantissant que votre fonction s'exécute sur l'horaire souhaité.

Avant que tu commences

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

Bien que la facturation soit obligatoire, 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 en fonction de 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 exigences particulières 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;
});

Les syntaxes 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 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 du planificateur associée et la rubrique pub/sub sont créées automatiquement. La CLI Firebase renvoie le 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 :

function_name -scheduled- nom_fonction - region

Par exemple:

firebase-scheduled-scheduledFunctionCrontab-us-east1.