Запускать Google Cloud Function в определенное время

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

У меня в основном есть функция startTask, которая изменяет некоторые данные в базе данных Firestore. Через X секунд (время передается функции startTask) должна быть вызвана функция finishTask.

Я уже пробовал возиться с Google Cloud Tasks, но мне кажется, что это неправильный путь.

Что такое компоненты React? Введение в компоненты | Типы компонентов
Что такое компоненты React? Введение в компоненты | Типы компонентов
Компонент - это независимый, многократно используемый фрагмент кода, который делит пользовательский интерфейс на более мелкие части. Например, если мы...
2
0
1 202
2

Ответы 2

В Google Cloud нет службы, которая бы делала то, что вам нужно, о чем я знаю. Если вам нужно, чтобы X произошло через N секунд после того, как пользователь выполнит Y, вам нужно будет самостоятельно запрограммировать эту службу.

Вы не указываете, какие службы вы используете для вычислений (App Engine, Compute Engine, Kubernetes и т. д.), Но написать службу планирования задач практически на любом языке не очень сложно. Есть много способов сделать это (код на стороне клиента / код на стороне сервера). Многие комбинации ОС / языка поддерживают планирование функции с тайм-аутом и обратным вызовом.

Самый простой способ - создать тему публикации / подписки cron-topic, на которую подписывается ваша облачная функция. Cloud Scheduler может отправлять событие на cron-topic по расписанию

Создать тему и подписку

gcloud pubsub topics create cron-topic
# create cron-sub for testing.  Function will create it's own subscription
gcloud pubsub subscriptions create cron-sub --topic cron-topic

Создать расписание

Команда ниже, но поскольку это бета, см. руководство по консоли здесь

# send a message every 3 hours. For testing use `0/2 * * * *` for every 2 min
gcloud beta scheduler jobs create pubsub --topic=cron-topic --schedule='0 */3 * * *'

Создайте функцию для использования темы cron-topic

Поместите код своей функции в текущий каталог и используйте эту команду для развертывания функции, прослушивая тему cron-topic.

FUNCTION_NAME=cron-topic-listener
gcloud functions deploy ${FUNCTION_NAME} --runtime go111 --trigger-topic cron-topic

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

OP просит запланировать запуск облачной функции только однажды.

somenickname 04.07.2019 00:44

Другие вопросы по теме