Тестовое приложение ProtoRPC App Engine Hello World не работает

Я пытался заставить работать довольно простой пример Hello World ProtoRPC App Engine, но безрезультатно. К сожалению, код с сайта не работает. Я рассмотрел несколько возможных решений, но не смог найти полный рабочий набор. Любая помощь приветствуется! Вы можете увидеть ошибку (или ее отсутствие) ниже:

app.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

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 вернул следующее: 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);}});

person kd1978    schedule 08.05.2013    source источник


Ответы (1)


Опубликованный вами Java-скрипт, похоже, содержит синтаксические ошибки. В основном, похоже, что вы используете символ ` вместо символа '.

Причина, по которой ваш запрос не работает, заключается в том, как вы написали файл app.yaml. Вы используете старый способ Python 2.5 для вызова приложений, ссылаясь на сценарий, а не на приложение WSGI. Вы можете исправить это, изменив обработчик URL в app.yaml на:

обработчики: - URL: /hello.* скрипт: hello.app

person Rafe Kaplan    schedule 14.05.2013