无法让Google端点使用多种服务

时间:2016-05-12 09:45:50

标签: python google-app-engine google-cloud-endpoints

感谢asamarin我已经能够弄清楚如何在同一个谷歌应用引擎中获得不同的端点(参见Using Google endpoints in different modules of the same app)。

但我无法使其发挥作用(至少在开发服务器上,我并没有尝试将其推向云端)。我有两个模块:module1和module2,每个模块运行一个独立的api(使用google端点)。 在每个moduleX / main.py中我都有这段代码:

import endpoints
from protorpc import remote

# ... some code

@endpoints.api(name="moduleX", version='v0') # X being 1 or 2 obviously
class ModuleX(remote.Service):

# ... definition of the different methods

api = endpoints.api_server([ModuleX])

当我使用两个相应的模块yaml文件运行dev_appserver.py时,它们启动良好(localhost上的module1:8080,localhost上的module2:8081)。

问题出现了:

  • localhost:8080 / _ah / api / explore效果很好,我可以用不同的方法看到我的module1 API

  • localhost:8081 / _ah / api / explore需要花费很多时间才能找到与模块1完全相同的API,除非我点击它时,它无法找到方法。

    < / LI>

我和Postman玩了一下,看看在木头下发生了什么,发现两次调用localhost:8080 / _ah / api / discovery / v1 / apis和localhost:8081 / _ah ...返回相同的信息,discoveryRestUrl为localhost:8080 / _ah / api / discovery / v1 / apis / module1 / v0 / rest。这很有趣,你会承认。

我做错了吗?只有开发服务器不能处理具有多个服务的端点吗?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

我相信这个问题只存在于dev_appserver中,因为我在本地遇到了同样的问题但是一旦部署就可以正常工作。

我的端点服务的app.yaml如下所示:

runtime: python27
threadsafe: true
api_version: 1
service: <module-name>

handlers:
- url: /_ah/spi/.*
  script: my_script.api

libraries:
- name: pycrypto
  version: 2.6
- name: endpoints
  version: 1.0

部署后,为了点击我的api,我发送请求到https://<module-name>-dot-<project-name>.appspot.com/_ah/api

因此,对于您提供的代码,您需要点击的端点为https://<module-name>-dot-<project-name>.appspot.com/_ah/api/<moduleX>/v0/<method> 请注意,<module-name>在app.yaml中定义,<moduleX><method>将在my_script.api的python代码中声明。

为了让它在dev_appserver上本地工作,我相信你需要在自己的dev_appserver实例中运行每个端点模块,如注意到here。不可否认,我没有让它完全在本地工作,因为当我尝试这样做时,我收到有关我的数据存储被锁定的错误,但我相信应该可以解决这个问题here