В настоящее время у меня есть 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 заключается в том, что никто не может читать документы из служб.
Как вы получаете доступ к службам со своего компьютера - вы делаете это через пользовательский интерфейс или делаете это программно, например. через CURL или Postman?
Я предоставил ответ ниже. Пожалуйста, проверьте
Как упоминалось в этом документеСреда выполнения Python 3 не нуждается в промежуточной службе для обработки исходящих запросов. Если вы хотите отказаться от использования API-интерфейсов получения URL-адресов, но по-прежнему нуждаетесь в аналогичных функциях, вам следует перенести эти запросы на использование стандартной библиотеки Python, такой как библиотека запросов.
Как обсуждалось в этой теме, кажется, вы также столкнулись с подобной проблемой.
Наличие зависимости request_toolbelt в проекте было проблема: это каким-то образом заставило библиотеку запросов использовать urllib3, которая требует присутствия URLFetch, в противном случае AppEnginePlatformError . Как предложено в документации по движку приложения Запросы с исправлением обезьяны с помощью request_toolbelt заставляют первый используйте URLFetch, который больше не поддерживается GAE в Python 3 время выполнения.
Вы можете решить эту проблему, удалив request_toolbelt из файл требований.txt
Вы также можете взглянуть на этот поток stackoverflow
Запросы с исправлением обезьяны с помощью request_toolbelt вынуждают первый использовать URLFetch, который больше не поддерживается GAE в среде выполнения Python 3.