Если вы хотите запланировать запуск функций в определенное время, используйте обработчик 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 .
Развертывание запланированной функции
При развертывании запланированной функции автоматически создаются связанное задание планировщика и тема pub/sub. Firebase CLI отображает имя темы, и вы можете просмотреть задание и тему в консоли Google Cloud . Тема именуется в соответствии со следующим соглашением:
firebase-scheduled- function_name - region
Например:
firebase-scheduled-scheduledFunctionCrontab-us-east1.