PS: Я делал это синхронно, используя в своей облачной функции следующее: name = "projects / project1 / locations / us-central1 / functions / test3" body = {'data': '{"message": "...

2
LearnerJS 12 Янв 2021 в 14:42

1 ответ

Лучший ответ

Ответ на ваш вопрос состоит из двух частей:

  1. Чтобы выполнить HTTP-вызов отдельной функции, вам необходимо настроить токен авторизации для запроса. Как видно из документации вы должны сначала:

Предоставьте роль Invoker Cloud Functions (roles/cloudfunctions.invoker) идентификатору вызывающей функции в принимающей функции. По умолчанию это идентификатор PROJECT_ID@appspot.gserviceaccount.com

А затем в вызывающей функции вам необходимо:

  • Создайте подписанный Google токен идентификатора OAuth, указав для аудитории (aud) URL-адрес получающей функции.
  • Включите токен идентификатора в заголовок Authorization: Bearer ID_TOKEN в запросе к функции.

ПРИМЕЧАНИЕ . Вы можете следовать примеру кода по той же ссылке документации, чтобы узнать, как его включить.

  1. для того, чтобы вызов был асинхронным, поскольку результат вас не интересует, вы можете вызвать do это с помощью многопроцессорного пула, который может выглядеть так:
import multiprocessing
import requests
    
p = multiprocessing.Pool(processes = 1)
p.apply_async(requests.get, ['YOUR_FUNCTION_URL'])

1
Rafael Lemos 13 Янв 2021 в 14:00