Я ищу способ запланировать облачные функции для Firebase или, другими словами, запускать их в определенное время.
Облачные функции для запуска Firebase вовремя?
Ответ 1
Обновление 2019-04-18
Теперь есть очень простой способ развертывания запланированного кода в облачных функциях через Firebase.
Вы можете использовать простой текстовый синтаксис:
export scheduledFunctionPlainEnglish =
functions.pubsub.schedule('every 5 minutes').onRun((context) => {
console.log('This will be run every 5 minutes!');
})
Или более гибкий формат таблицы cron:
export scheduledFunctionCrontab =
functions.pubsub.schedule('5 11 * * *').onRun((context) => {
console.log('This will be run every day at 11:05 AM UTC!');
});
Чтобы узнать больше об этом, смотрите:
- Облачные функции планирования для блога Firebase, представляющие эту функцию.
- Документация по плановым функциям.
Обратите внимание, что ваш проект должен иметь план Blaze, чтобы это работало, поэтому я оставляю альтернативные варианты ниже для справки.
Оригинальный ответ ниже...
Пока нет встроенного триггера типа runat/cron.
На данный момент лучшим вариантом является использование внешнего сервиса для периодического запуска функции HTTP. См. Этот пример в репозитории functions-samples для получения дополнительной информации. Или используйте недавно представленный Google Cloud Scheduler для запуска облачных функций через PubSub или HTTPS:
Я также настоятельно рекомендую прочитать этот пост в блоге Firebase: " Как планировать (Cron) задания с облачными функциями для Firebase" и это видео: " Timing Cloud" для Firebase с использованием HTTP Trigger и Cron.
Эта последняя ссылка использует cron-job.org для запуска облачных функций и работает для проектов, работающих по бесплатному плану. Обратите внимание, что это позволяет любому вызывать вашу функцию без авторизации, поэтому вы можете захотеть включить какой-либо механизм защиты от злоупотреблений в сам код.
Ответ 2
Что вы можете сделать, это развернуть экземпляр AppEngine, который запускается заданием cron и испускает PubSub. Я написал сообщение в блоге специально об этом, вы можете взглянуть:
https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html