Я ищу способ запланировать облачные функции для Firebase или, другими словами, запускать их в определенное время.
Ответы:
Обновление 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!');
});
Чтобы узнать больше об этом, см .:
Обратите внимание, что ваш проект должен быть включен в план Blaze, чтобы это работало, поэтому я оставляю альтернативные варианты ниже для справки.
Если вы хотите запланировать однократный вызов облачной функции с задержкой из-за выполнения другого триггера, вы можете использовать облачные задачи, чтобы настроить это. Прочтите эту статью, чтобы увидеть подробный пример того, как это может работать.
Оригинальный ответ ниже ...
Встроенного триггера типа runat / cron пока нет.
На данный момент лучшим вариантом является использование внешней службы для периодического запуска функции HTTP. См. Этот образец в репозитории functions-samples для получения дополнительной информации. Или используйте недавно представленный Google Cloud Scheduler, чтобы запускать облачные функции через PubSub или HTTPS:
Я также настоятельно рекомендую прочитать этот пост в блоге Firebase: Как планировать (Cron) задания с помощью облачных функций для Firebase и это видео: Временные облачные функции для Firebase с использованием HTTP-триггера и Cron .
Последняя ссылка использует cron-job.org для запуска облачных функций и работает для проектов с бесплатным тарифным планом. Обратите внимание, что это позволяет любому вызывать вашу функцию без авторизации, поэтому вы можете включить какой-либо механизм защиты от злоупотреблений в сам код.
Each Cloud Scheduler job costs $0.10 (USD) per month
предполагается, что «задание» означает не каждый раз, когда срабатывает запланированная вещь, а стоимость таймера? то есть задание, которое выполняется каждую минуту, стоит всего 0,10 доллара? (за исключением вызываемых им облачных функций).
Что вы можете сделать, так это запустить экземпляр AppEngine, который запускается заданием cron и отправляет его в PubSub. Я написал сообщение в блоге специально об этом, вы можете взглянуть:
https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html
cron-job.org
что то, о чем Джен говорит в своем блоге, можно использовать бесплатно.