0

我一直试图让相当简单的 Hello World ProtoRPC App Engine 示例工作,但无济于事。不幸的是,该网站的代码似乎不起作用。我查看了许多可能的解决方案,但找不到完整的工作集。任何帮助将非常感激!您可以在下面看到错误(或缺少错误):

应用程序.yaml

application: proto-test
version: 1
runtime: python27
api_version: 1
threadsafe: false

handlers:
- url: /hello.*
  script: hello.py

你好.py

from protorpc import messages
from protorpc import remote
from protorpc.wsgi import service

package = 'hello'

# Create the request string containing the user's name
class HelloRequest(messages.Message):
    my_name = messages.StringField(1, required=True)

# Create the response string
class HelloResponse(messages.Message):
    hello = messages.StringField(1, required=True)

# Create the RPC service to exchange messages
class HelloService(remote.Service):

    @remote.method(HelloRequest, HelloResponse)
    def hello(self, request):
        return HelloResponse(hello='Hello there, %s!' % request.my_name)

# Map the RPC service and path (/hello)
app = service.service_mappings([('/hello', HelloService)])

卷曲命令

curl -H 'content-type:application/json' -d '{"my_name":"test1"}' http://proto-test.appspot.com/hello.hello

当我在命令行中运行上述命令时,它只是返回提示而没有错误。我的日志表明 curl 命令有点工作,但它只是没有提供响应。这是日志中显示的内容:

2013-05-08 22:27:07.409 /hello.hello 200 522ms 0kb curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
2620:0:10c8:1007:a800:1ff:fe00:33af - - [08/May/2013:14:27:07 -0700] "POST /hello.hello HTTP/1.1" 200 0 - "curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3" "proto-test.appspot.com" ms=523 cpu_ms=133 loading_request=1 app_engine_release=1.8.0 instance=00c61b117c66197ad84ad9bc61485b292e5129

I 2013-05-08 22:27:07.409
This request caused a new process to be started for your application, and thus caused your application code to be loaded for the first time. This request may thus take longer and use more CPU than a typical request for your application.

通过 Chrome JS 控制台的 Ajax 调用返回以下内容:SyntaxError: Unexpected token ILLEGAL

$.ajax({url: ‘/hello.hello’, type: 'POST', contentType: 'application/json', data: ‘{ "my_name": "Bob" }’,dataType: 'json',success: function(response){alert(response.hello);}});
4

1 回答 1

1

您发布的 Java 脚本似乎有语法错误。主要是,您似乎在某些地方使用了 ` 字符而不是 ' 字符。

您的请求不起作用的原因是您编写 app.yaml 文件的方式。您通过引用脚本而不是 WSGI 应用程序来使用旧的 Python 2.5 调用应用程序的方式。您可以通过将 app.yaml 中的 url 处理程序更改为:

处理程序:- url:/hello.* 脚本:hello.app

于 2013-05-14T18:49:24.827 回答