Google App Engine настраивает Endpoints API

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

WARNING  2016-11-01 06:16:48,279 client.py:229] no scheduler thread, scheduler.run() will be invoked by report(...)
Traceback (most recent call last):
File "/home/vladimir/projects/sb_fork/sb/lib/vendor/google/api/control/client.py", line 225, in start
self._thread.start()
File "/home/vladimir/sdk/google-cloud-sdk/platform/google_appengine/google/appengine/api/background_thread/background_thread.py", line 108, in start
start_new_background_thread(self.__bootstrap, ())
File "/home/vladimir/sdk/google-cloud-sdk/platform/google_appengine/google/appengine/api/background_thread/background_thread.py", line 87, in start_new_background_thread
raise ERROR_MAP[error.application_error](error.error_detail)
FrontendsNotSupported
INFO     2016-11-01 06:16:48,280 client.py:327] created a scheduler to control flushing
INFO     2016-11-01 06:16:48,280 client.py:330] scheduling initial check and flush
INFO     2016-11-01 06:16:48,288 client.py:804] Refreshing access_token
/home/vladimir/projects/sb_fork/sb/lib/vendor/urllib3/contrib/appengine.py:113: AppEnginePlatformWarning: urllib3 is using URLFetch on Google App Engine sandbox instead of sockets. To use sockets directly instead of URLFetch see https://urllib3.readthedocs.io/en/latest/contrib.html.
AppEnginePlatformWarning)
ERROR    2016-11-01 06:16:49,895 service_config.py:125] Fetching service config failed (status code 403)
ERROR    2016-11-01 06:16:49,896 wsgi.py:263] 
Traceback (most recent call last):
File "/home/vladimir/sdk/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 240, in Handle
handler = _config_handle.add_wsgi_middleware(self._LoadHandler())
File "/home/vladimir/sdk/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 299, in _LoadHandler
handler, path, err = LoadObject(self._handler)
File "/home/vladimir/sdk/google-cloud-sdk/platform/google_appengine/google/appengine/runtime/wsgi.py", line 85, in LoadObject
obj = __import__(path[0])
File "/home/vladimir/projects/sb_fork/sb/main.py", line 27, in <module>
api_app = endpoints.api_server([SolarisAPI,], restricted=False)
File "/home/vladimir/projects/sb_fork/sb/lib/vendor/endpoints/apiserving.py", line 497, in api_server
controller)
File "/home/vladimir/projects/sb_fork/sb/lib/vendor/google/api/control/wsgi.py", line 77, in add_all
a_service = loader.load()
File "/home/vladimir/projects/sb_fork/sb/lib/vendor/google/api/control/service.py", line 110, in load
return self._load_func(**kw)
File "/home/vladimir/projects/sb_fork/sb/lib/vendor/google/api/config/service_config.py", line 78, in fetch_service_config
_log_and_raise(Exception, message_template.format(status_code))
File "/home/vladimir/projects/sb_fork/sb/lib/vendor/google/api/config/service_config.py", line 126, in _log_and_raise
raise exception_class(message)
Exception: Fetching service config failed (status code 403)
INFO     2016-11-01 06:16:49,913 module.py:788] default: "GET / HTTP/1.1" 500 -

Мой app.yaml настроен так же, как в новом документе Endpoints Migration to 2.0:

- url: /_ah/api/.*
  script: api.solaris.api_app

И main.py импортирует API в приложение:

api_app = endpoints.api_server([SolarisAPI,], restricted=False)

Я использую Google Cloud SDK со следующими версиями:

Google Cloud SDK 132.0.0
app-engine-python 1.9.40
bq 2.0.24
bq-nix 2.0.24
core 2016.10.24
core-nix 2016.10.24
gcloud 
gsutil 4.22
gsutil-nix 4.22

person dgmt    schedule 01.11.2016    source источник
comment
У меня такая же ошибка с моим проектом конечных точек после обновления до конечных точек 4.0.0+.   -  person mparkes    schedule 16.12.2018


Ответы (2)


Чтобы избавиться от «FrontendsNotSupported», вам нужно использовать класс экземпляра «B *».

Ошибка «Исключение: не удалось получить конфигурацию службы» должна исчезнуть, если вы выполните действия, описанные в https://cloud.google.com/endpoints/docs/frameworks/python/quickstart-frameworks-python. Как уже указывал Брэд, раздел «Конфигурация OpenAPI» и результирующие переменные среды необходимы для того, чтобы конфигурация службы работала.

person sebi    schedule 02.11.2016
comment
Я не могу понять, что вам нужно использовать класс экземпляра B *. Можете ли вы дать больше информации об этом? - person user362953; 18.02.2017
comment
@user362953 user362953 У вашего экземпляра службы в appengine есть класс, который указывает класс или ресурсы (ЦП, память), которые нужны/используются вашему приложению. https://cloud.google.com/appengine/docs/standard/#instance_classes вы можете найти все об этом. - person Vamsidhar Muggulla; 06.09.2017

Вы пытались создать и загрузить конфигурацию OpenAPI для службы? См. разделы под названием "Создание файла конфигурации OpenAPI" и "Развертывание файла конфигурации OpenAPI" в документации библиотеки Python.

Обратите внимание, что на шаге 2 процесса генерации вам может потребоваться добавить python к команде (например, python lib/endpoints/endpointscfg.py get_swagger_spec ...), поскольку пакет PyPi прямо сейчас не сохраняет права доступа к исполняемому файлу.

person Brad Friedman    schedule 01.11.2016
comment
это недостающий шаг, у меня те же проблемы со средой, что и в этой проблеме, и я не могу решить appengine.ext проблема - person dgmt; 05.11.2016
comment
@Brad Я вижу ту же ошибку даже с правильным env_variables в app.yaml. Любая идея, почему это может быть так? stackoverflow.com/questions/42310672/ содержит дополнительную информацию. - person user362953; 18.02.2017
comment
Я ответил на вопрос, но, скопировав то, что я сказал здесь, шаг gcloud service-management deploy, вероятно, не сработал, как ожидалось. Я бы попробовал это еще раз, убедившись, что все настроено правильно, и убедившись, что в этой команде нет ошибок. Дай мне знать, если это работает! :) - person Brad Friedman; 21.02.2017
comment
@BradFriedman: Спасибо :) У меня есть похожие вопросы :) Я добавил API в существующее приложение AppEngine WebApp. Я только указал URL-адрес обработчика: /_ah/spi/.* и добавил код обработчика. Я вижу свою конечную точку через API Explorer, и она работает. Среди шагов в Quickstart, упомянутых в ответе sebi, я не реализовал Создание файла конфигурации OpenAPI или Развертывание файла конфигурации OpenAPI. Это приводит меня к таким вопросам, как: Опустив шаги OpenAPI, я реализовал только некоторые шаги для использования конечных точек. Что такое конечная служба? Кажется, я не использовал Service. - person user362953; 22.02.2017