1

配置端点API时遇到问题。我使用,从我自己的,谷歌的例子在现场的任何代码失败,相同的回溯Google App Engine配置端点API

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配置像新端点迁移到2.0文件规定:

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

而且main.py进口该API到应用程序:

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

我使用谷歌云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 

回答

1

要摆脱“FrontendsNotSupported”,您需要使用“B *”实例类。

如果您按照https://cloud.google.com/endpoints/docs/frameworks/python/quickstart-frameworks-python中的步骤操作,则应该消除“异常:获取服务配置失败”错误。正如Brad已经指出的那样,需要“OpenAPI配置”部分和生成的环境变量来使服务配置生效。

+1

我无法关注“您需要使用”B *“实例类。” 你可以提供更多的信息吗? – user362953

+0

@ user362953您的appengine服务实例有一个类,它指定您的应用程序需要/使用的类或资源(CPU,内存)。 'https://cloud.google。com/appengine/docs/standard /#instance_classes' 你可以找到关于它的所有信息。 –

2

您是否尝试过生成并上传服务的OpenAPI配置?请参阅python library documentation中名为"Generating the OpenAPI configuration file""Deploying the OpenAPI configuration file"的部分。

请注意,在生成过程的第2步中,您可能需要在命令前加上python(例如python lib/endpoints/endpointscfg.py get_swagger_spec ...),因为PyPi包现在不保留可执行文件许可权。

+0

这是缺少的一步,我有像在这个问题的环境相同的问题,我似乎无法解决appengine.ext [issue](http://stackoverflow.com/questions/ 39926853/error-running-endpointscfg-py-get-swagger-spec) – dgmt

+0

@Brad 即使在app.yaml中有正确的'env_variables',我也会看到同样的错误。 任何想法为什么可能是这种情况? http://stackoverflow.com/questions/42310672/google-appengine-endpoints-error-fetching-service-config-failed-status-code-40有更多信息。 – user362953

+0

我回答了这个问题,但是复制了我在这里说的话 - gcloud服务管理部署步骤可能无法按预期工作。我会再试一次,确保所有内容都正确配置,并确保在该命令中没有错误输出。让我知道如果这有效! :) –