Функции расписания


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

Прежде чем начать

Чтобы использовать это решение в проекте Firebase, ваш проект должен быть на тарифном плане Blaze. Если он ещё не на тарифном плане Blaze, перейдите на более высокий тарифный план .

Несмотря на то, что оплата обязательна, общая стоимость будет приемлемой, поскольку каждое задание 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 .

Развертывание запланированной функции

При развертывании запланированной функции соответствующее задание планировщика и тема публикации/подписки создаются автоматически. Интерфейс командной строки Firebase отображает имя темы, и вы можете просмотреть задание и тему в консоли Google Cloud . Тема именуется в соответствии со следующим соглашением:

firebase-scheduled- function_name - region

Например:

firebase-scheduled-scheduledFunctionCrontab-us-east1.