как запланировать что-то из облачной функции

У меня есть бессерверное приложение, работающее как облачная функция Google, запускаемая завершением объекта bucket. в конце логики функции я хочу вызвать другое действие (также функцию) ровно через одну минуту (или время T). в настоящее время не мог придумать способ вызвать другое действие за одну минуту, и мне пришлось использовать режим сна в моем приложении.

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

какие-либо предложения о том, как выполнить что-то из облачной функции за время T, чтобы я мог просто выйти из функции и сэкономить деньги?

Имея в виду, я хотел бы оставить его без сервера и использовать GCP.


person Itamar Lavender    schedule 26.07.2019    source источник
comment
Это означает использование другой услуги, которая обычно также стоит денег. Вы можете использовать дизайн на основе состояния или дизайн по расписанию: Cloud Tasks / Cloud Scheduler.   -  person John Hanley    schedule 26.07.2019
comment
Спасибо, Джон, но вопрос именно об этом. мое приложение уже использует cloud.google.com/go/scheduler/apiv1, но это планировщик стиля crontab для повторяющихся выполнений. другие службы, которые я знаю о таких pubsub, не предлагают никаких механизмов, которые я мог бы использовать только для этого. Я понимаю, что каждое решение будет иметь свою стоимость, но я думаю, что она должна быть ниже, чем сон в течение 60 секунд внутри облачной функции   -  person Itamar Lavender    schedule 26.07.2019
comment
Вы рассчитывали стоимость сна в течение 60 секунд? Вы получаете до 1 миллиона секунд вычислений в месяц бесплатно. cloud.google.com/functions/pricing-summary Фактическая стоимость не такая простой, но необходимые детали присутствуют в вашем вопросе.   -  person John Hanley    schedule 27.07.2019
comment
Мы уже вышли за рамки бесплатного доступа. Ищу инженерное решение / идею, а не бухгалтерскую.   -  person Itamar Lavender    schedule 27.07.2019
comment
Отредактируйте свой вопрос, где вы формулируете и экономите деньги? Я не предложил решения, просто комментарии, которые помогут сформулировать лучший вопрос.   -  person John Hanley    schedule 27.07.2019


Ответы (1)


Используйте облачные задачи с целевой задачей HTTP и schedule_time:

  1. Событие GCS finalize запускает Облачную функцию A
  2. В облачной функции A создайте целевую задачу HTTP в облачной функции A. с schedule_time = now + 60s и url = URL of Cloud Function B
  3. По прошествии минуты облачная задача будет запланирована, и будет вызвана облачная функция B.
person Aleksi    schedule 16.08.2019
comment
Спасибо, @Aleksi, об этом определенно думали, но механизм аутентификации нам не подходит, так как HTTP должен быть каким-то предварительно общим секретом / ключом. При этом это вполне применимое решение. - person Itamar Lavender; 21.08.2019