如何配置App Engine多类端点

时间:2013-12-29 16:12:59

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

我目前正在设置一个项目,在mac上使用带有python 2.7的app引擎,使用多类配置的新端点。我相信我按照说明操作,但是当我执行GET请求时,我从wsgi收到以下错误。

TypeError: __call__() takes exactly 2 arguments (3 given)

在我的app.yaml中,我有以下配置。

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

在我的apis.py中,我有以下内容。

api = endpoints.api(name="marketplace", version="v1")

@api.api_class(resource_name="system")
class SystemApi(remote.Service):
    @endpoints.method(message_types.VoidMessage, message_types.VoidMessage, path="about", http_method="GET")
    def about(self, request):
        logging.debug("enter")
        return message_types.VoidMessage()

server = endpoints.api_server([api], restricted=False)

然后我尝试简单地执行以下的get请求。

curl http://localhost:8080/_ah/api/marketplace/v1/system/about

在这种情况下,我收到以下错误。

Mon, 30 Dec 2013 00:31:33 ERROR    wsgi.py wsgi.Handle:278 
Traceback (most recent call last):
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/runtime/wsgi.py", line 266, in Handle
    result = handler(dict(self._environ), self._StartResponse)
TypeError: __call__() takes exactly 2 arguments (3 given)
INFO     2013-12-30 00:31:33,710 module.py:617] default: "POST /_ah/spi/BackendService.getApiConfigs HTTP/1.1" 500 -
INFO     2013-12-30 00:31:33,710 module.py:617] default: "GET /_ah/api/marketplace/v1/system/about HTTP/1.1" 500 60

1 个答案:

答案 0 :(得分:0)

更改app.yaml的代码中的最后一行

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

最后一行以匹配您在apis.py代码段中的内容:

handlers:
- url: /_ah/spi/.*
  script: apis.server

通常的做法是将特定变量用于大写以消除此特定错误。