Хмарні функції для запуску Firebase вчасно?


Відповіді:


113

Оновлення 2019-04-18

Зараз існує дуже простий спосіб розгортати запланований код у хмарних функціях через Firebase.

Ви можете використовувати простий синтаксис тексту:

export scheduledFunctionPlainEnglish =
functions.pubsub.schedule('every 5 minutes').onRun((context) => {
    console.log('This will be run every 5 minutes!');
})

Або більш гнучкий формат таблиці кронів:

export scheduledFunctionCrontab =
functions.pubsub.schedule('5 11 * * *').onRun((context) => {
    console.log('This will be run every day at 11:05 AM UTC!');
});

Щоб дізнатися більше про це, див:

Зауважте, що ваш проект повинен мати план Blaze, щоб це працювало, тому я залишаю нижче альтернативні варіанти для довідки.

Якщо ви хочете запланувати одне виклик хмарної функції на затримку з виконання іншого тригера, ви можете використовувати хмарні завдання, щоб встановити це налаштування. Прочитайте цю статтю для розширеного прикладу того, як це може працювати.

Оригінальна відповідь нижче ...


Ще немає вбудованого тригера типу рунат / крон.

На даний момент найкращим варіантом є використання зовнішньої служби для періодичного запуску функції HTTP. Для отримання додаткової інформації дивіться цей зразок у репортажі зразків функцій . Або скористайтеся нещодавно представленим Google Cloud Scheduler для запуску хмарних функцій через PubSub або HTTPS:

введіть тут опис зображення

Я також настійно рекомендую прочитати цю публікацію в блозі Firebase: Як скласти графік роботи (Cron) роботи з хмарними функціями для Firebase та це відео: Хмарні функції хмари для Firebase за допомогою тригера HTTP та Cron .

Це останнє посилання використовує cron-job.org для запуску функцій Cloud та працює для проектів, які мають вільний план. Зауважте, що це дозволяє будь-кому телефонувати без функції авторизації вашої функції, тому ви, можливо, захочете включити якийсь механізм захисту від зловживань у сам код.


1
Навколо цього нічого не змінилося. У тому числі і про те, cron-job.orgщо Джен розмовляє про це в дописі в блозі, це безкоштовно.
Френк ван Пуффелен

2
Відео від Джен позначено як застаріле. То чи є інший спосіб це зробити?
б-фг

2
Підхід сьогодні такий же чинний, як і коли було зроблено відео (та допис у блозі). Синтаксис трохи змінився, але я не думаю, що на це впливає конкретний випадок. Якщо у вас виникли проблеми із створенням цієї роботи, відкрийте запитання, яке показує, що ви вже зробили.
Франк ван Пуффелен

1
Нічого, нарешті вони реалізували спосіб зробити це просто! Нарешті !!!! Дякую за оновлення
schankam

1
На сторінці Cloud Cloud Scheduler: Each Cloud Scheduler job costs $0.10 (USD) per monthякщо припустити, що "робота" не означає кожного разу, коли запланована річ, але вартість за таймер? тобто робота, яка працює щохвилини, коштує лише 0,10 долара? (за винятком усіх хмарних функцій, які вона викликає).
Аарон Еш

12

Що ви можете зробити, це запустити екземпляр AppEngine, який запускається завданням cron і випускається в PubSub. Я написав повідомлення в блозі саме про це, можливо, ви захочете поглянути:

https://mhaligowski.github.io/blog/2017/05/25/scheduled-cloud-function-execution.html


1
Яка орієнтовна вартість на місяць для роботи з хроном, яка спрацьовує раз на годину?
Ехтешам Хасан

3
@EhteshamHasan Схоже, це потенційно безкоштовно: cloud.google.com/free . В даний час 28 годин / день безкоштовно; Також є безкоштовний екземпляр f1-micro з w / Linux, що працює з Google Compute Engine, за допомогою безкоштовних атм.
bitsoflogic
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.