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