Связь между микросервисами в Google App Engine

В настоящее время у меня есть 5 различных сервисов в Google App Engine, все они находятся в стандартной среде FastAPI Python. Когда вызывается служба, они вызывают службу авторизации и продолжают работу, если разрешения действительны. Я использую правило брандмауэра, чтобы отключить все входящие запросы, но разрешить мой компьютер. При использовании правила брандмауэра я не могу вызвать другую службу, потому что она возвращает «Доступ запрещен». Затем я нашел кое-что о запросах в Python в GAE, которые вы должны использовать Google URLfetch для вызовов других служб. Но когда я использую функцию monkeypatch() из requests_toolbelt.adapters.appengine, я получаю сообщение об ошибке в App Engine.

  File "/layers/google.python.pip/pip/lib/python3.10/site-packages/requests_toolbelt/adapters/appengine.py", line 121, in __init__
    self.appengine_manager = gaecontrib.AppEngineManager(
  File "/layers/google.python.pip/pip/lib/python3.10/site-packages/urllib3/contrib/appengine.py", line 107, in __init__
    raise AppEnginePlatformError(
urllib3.contrib.appengine.AppEnginePlatformError: URLFetch is not available in this environment.

Основная причина ограничения API заключается в том, что никто не может читать документы из служб.

Запросы с исправлением обезьяны с помощью request_toolbelt вынуждают первый использовать URLFetch, который больше не поддерживается GAE в среде выполнения Python 3.

Sathi Aiswarya 09.01.2023 13:39

Как вы получаете доступ к службам со своего компьютера - вы делаете это через пользовательский интерфейс или делаете это программно, например. через CURL или Postman?

NoCommandLine 10.01.2023 16:55

Я предоставил ответ ниже. Пожалуйста, проверьте

Sathi Aiswarya 17.01.2023 15:19
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
3
85
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Как упоминалось в этом документеСреда выполнения Python 3 не нуждается в промежуточной службе для обработки исходящих запросов. Если вы хотите отказаться от использования API-интерфейсов получения URL-адресов, но по-прежнему нуждаетесь в аналогичных функциях, вам следует перенести эти запросы на использование стандартной библиотеки Python, такой как библиотека запросов.

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

Наличие зависимости request_toolbelt в проекте было проблема: это каким-то образом заставило библиотеку запросов использовать urllib3, которая требует присутствия URLFetch, в противном случае AppEnginePlatformError . Как предложено в документации по движку приложения Запросы с исправлением обезьяны с помощью request_toolbelt заставляют первый используйте URLFetch, который больше не поддерживается GAE в Python 3 время выполнения.

Вы можете решить эту проблему, удалив request_toolbelt из файл требований.txt

Вы также можете взглянуть на этот поток stackoverflow

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

Пользователь не авторизован для выполнения этого действия при вызове cronjob
Поддерживает ли движок облачного приложения Google 200 потоков по умолчанию?
Ошибка при вызове Spring Boot API, который развернут в Google App Engine через облачную сборку
Бессерверное веб-приложение Python против сервера WSGI
Ошибка развертывания ядра приложения Google: [9] Произошла внутренняя ошибка [...] Для запуска этого приложения необходимо установить или обновить .NET
Ошибка неожиданного атрибута app_engine_apis при развертывании приложения Python 3 App Engine Flask
Создает базу данных по умолчанию в Firestore, используя Google.Apis.Appengine.v1 в библиотеке C#
Подключить локальный стандартный сервер Java Google AppEngine к облачной базе данных | appengine-api-1.0-sdk-1.9.84.jar | IntelliJ и облачный код
Создание файла и отправка почты с помощью nodemailer — GCP+NodeJS
Получить все сущности для пространства имен -- KindError при попытке получить все сущности пространства имен из хранилища данных appengine python 2.7