Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

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

Оптимизируйте свои подборки Сохраняйте и классифицируйте контент в соответствии со своими настройками.

Если вы хотите запланировать выполнение функций в определенное время, используйте functions.pubsub.schedule().onRun() Этот удобный метод создает тему 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.