Я ищу способ запланировать облачные функции для Firebase или, другими словами, запускать их в определенное время.

Ответы (3)

Обновление 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, чтобы это работало, поэтому я оставляю альтернативные варианты ниже для справки.

Если вы хотите запланировать однократный вызов облачной функции с задержкой внутри выполнения другого триггера, вы можете использовать Cloud Tasks, чтобы настроить это.Прочтите эту статью, чтобы получить расширенный пример того, как это может работать.

Исходный ответ ниже ...


Встроенного триггера типа runat / cron пока нет.

На данный момент лучшим вариантом является использование внешней службы для периодического запуска функции HTTP. См. Этот образец в репозитории functions-samples для получения дополнительной информации. Или используйте недавно представленный Google Cloud Scheduler для запуска облачных функций через PubSub или HTTPS:

enter image description here

• 100001 Крон.

Эта последняя ссылка использует cron-job.org для запуска облачных функций и работает для проектов с бесплатным тарифным планом. Обратите внимание, что это позволяет кому угодно вызывать вашу функцию без авторизации, поэтому вы можете включить какой-либо механизм защиты от злоупотреблений в сам код.

Важно сначала отметить, что часовой пояс по умолчанию, в котором будут выполняться ваши функции, - America / Los_Angeles в соответствии с документацией. Вы можете найти список часовых поясов здесь, если вы хотите запускать свои функции в другом часовом поясе.

NB !!: Вот полезный веб-сайт для помощи с форматами таблиц cron (я нашел это очень полезным)

Вот как бы вы это сделали: (Предполагая, что вы хотите использовать Africa / Johannesburg в качестве часового пояса)

export const executeFunction = functions.pubsub.schedule("10 23 * * *")
    .timeZone('Africa/Johannesburg').onRun(() => { 
       console.log("successfully executed at 23:10 Johannesburg Time!!");
    });

В противном случае, если вы предпочитаете использовать значение по умолчанию:

export const executeFunction = functions.pubsub.schedule("10 23 * * *")
    .onRun(() => { 
       console.log("successfully executed at 23:10 Los Angeles Time!!");
    });

Что вы можете сделать, так это запустить экземпляр AppEngine, который запускается заданием cron и отправляет его в PubSub. Я написал сообщение в блоге специально об этом, вы можете взглянуть:

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

2022 WebDevInsider