Catch up on highlights from Firebase at Google I/O 2023. Learn more

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


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

Прежде чем вы начнете

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

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

API Pub/Sub и Cloud Scheduler должны быть включены для вашего проекта. Они уже должны быть включены для большинства проектов Firebase; вы можете проверить в консоли Google Cloud Platform .

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

В облачных функциях для 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 .

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

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

firebase-scheduled function_name - region

Например:

firebase-scheduled-scheduledFunctionCrontab-us-east1.