Функции расписания (1-го поколения)

Если вы хотите запланировать выполнение функций в указанное время, используйте обработчик 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)) . Например, чтобы запускать функцию каждые пять минут с помощью синтаксиса cron.yaml App Engine , сделайте что-то подобное:

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 .

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

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

firebase-scheduled function_name - region

Например:

firebase-scheduled-scheduledFunctionCrontab-us-east1.