Функции планирования (первое поколение)

Если вы хотите запланировать выполнение функций в определенное время, используйте обработчик onSchedule, чтобы создать тему Pub/Sub, которая будет использовать Cloud Scheduler для запуска событий в этой теме.

Подготовка

Хотя за запланированные функции взимается плата, общая стоимость будет приемлемой, поскольку каждое задание Cloud Scheduler стоит 0, 10 долл.США в месяц, а на каждый аккаунт Google бесплатно предоставляется три задания. Чтобы рассчитать стоимость использования Blaze на основе прогнозируемого объема, воспользуйтесь калькулятором цен.

В вашем проекте должны быть включены API Pub/Sub и Cloud Scheduler. Они должны быть включены в большинстве проектов Firebase. Проверить это можно в консоли Google Cloud.

Как написать запланированную функцию

В Cloud Functions for Firebase логика планирования находится в коде функций, и при развертывании не предъявляется никаких особых требований. Чтобы создать запланированную функцию, используйте functions.pubsub.schedule('your schedule').onRun((context)). Например, чтобы функция выполнялась каждые пять минут с помощью синтаксиса App Engine cron.yaml, сделайте следующее:

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

Cloud Scheduler поддерживает как синтаксис Unix Crontab, так и синтаксис App Engine. Например, чтобы использовать Crontab для выбора определенного часового пояса, в котором будет выполняться запланированная функция, сделайте следующее:

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;
});

Значение тега timeZone должно быть названием часового пояса из базы данных tz. Подробнее о поддерживаемых свойствах можно узнать в справочнике по Cloud Scheduler.

Как развернуть запланированную функцию

При развертывании запланированной функции автоматически создаются связанная задача планировщика и тема Pub/Sub. CLI Firebase выводит название темы, а задание и тему можно посмотреть в консоли Google Cloud. Название темы формируется по следующему принципу:

firebase-scheduled-function_name-region

Пример:

firebase-scheduled-scheduledFunctionCrontab-us-east1.