2013-05-08 65 views
0

我一直在試圖讓相當簡單的Hello World ProtoRPC App Engine示例工作,但無濟於事。來自網站的代碼似乎並不幸運。我已經查看了一些可能的解決方案,但找不到完整的工作集。任何幫助將非常感激!可以看到錯誤(或其缺乏)表示:ProtoRPC App Engine Hello World測試應用程序不能正常工作

的app.yaml

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

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

hello.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命令

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. 

Ajax調用通過Chrome JS控制檯返回以下:語法錯誤:意外的令牌非法

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

回答

1

您發佈的Java腳本的似乎有語法錯誤。主要看起來你正在使用「角色」而不是「角色」。

您的請求無法正常工作的原因在於您如何編寫app.yaml文件。通過引用腳本而不是WSGI應用程序,您正在使用舊的Python 2.5調用應用程序的方式。

處理程序:您可以通過在app.yaml中更改URL處理程序來糾正它 - 網址:/hello.* 腳本:hello.app

相關問題