Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

Если вы хотите , чтобы график функции для запуска в определенное время, использование functions.pubsub.schedule().onRun() Этот метод создает удобство Pub / Sub тему и использует облако планировщик для запуска событий по этой теме, гарантируя , что ваша функция работает на желаемое расписание.

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

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

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

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

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

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

Облачный планировщик поддерживает синтаксис 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 . Смотрите ссылку Облака планировщика для получения дополнительной информации о поддерживаемых свойствах.

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

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

firebase-scheduled- function_name - region

Например:

firebase-запланированный-запланированныйFunctionCrontab-us-east1.