django non rel и движок приложений google: проблема с удаленным API

Я развертываю приложение django-nonrel на Google App Engine. Приложение развертывается нормально, но я не могу войти в удаленную оболочку.

Это мой файл app.yaml:

application: masnun
version: 1
runtime: python
api_version: 1

builtins:
- remote_api: on

inbound_services:
- warmup

handlers:
- url: /_ah/queue/deferred
  script: djangoappengine/deferred/handler.py
  login: admin

- url: /media/admin
  static_dir: django/contrib/admin/media
  expiration: '0'

- url: /.*
  script: djangoappengine/main/main.py

Но я получаю сообщение об ошибке:

urllib2.URLError: <urlopen error HTTP Error 500: Internal Server Error
Couldn't reach remote_api handler at https://masnun.appspot.com/_ah/remote_api(/.*)?.
Make sure you've deployed your project and installed a remote_api handler in app.yaml.>

Пожалуйста, помогите мне!

Обновление: при использовании Python2.5 появляется эта ошибка:

DEBUG:google.appengine.tools.appengine_rpc:Got http error, this is try #3
DEBUG:google.appengine.tools.appengine_rpc:Sending HTTPS request:
GET /_ah/remote_api(/.*)? HTTPS/1.1
Host: masnun.appspot.com
X-appcfg-api-version: 1
Content-type: application/octet-stream
User-agent: Google-remote_api/1.0 Linux/2.6.35-25-generic Python/2.5.5.final.0

person masnun    schedule 28.02.2011    source источник
comment
Какую команду вы выполняете? Похоже, вы передаете регулярное выражение для URL-адреса для получения.   -  person Nick Johnson    schedule 28.02.2011
comment
python manage.py deploy python manage.py remote Не работает в обоих случаях.   -  person masnun    schedule 28.02.2011


Ответы (3)


Проблема с

ПОЛУЧИТЬ /_ah/remote_api(/.*)? HTTPS / 1.1

Если вы заметили, URL-адрес содержит недопустимые символы "(/.*)?" к концу.

Предполагая, что вы используете django-nonrel, это легко исправить. Открыть файл

djangoappengine/db/base.py

и измените строку

self.remote_api_path = handler.url

to

self.remote_api_path = handler.url.split('(')[0] # remove '(/.*)' introduced in newer GAE

и это должно позаботиться о том, чтобы URL был правильным.

person Sarang    schedule 10.05.2012
comment
Я больше не работаю над проектом. Тем не менее, спасибо за ответ, и я его принял :) - person masnun; 10.05.2012

Добавьте это в обработчики разделов app.yaml, первый элемент:


handlers:
- url: /remote_api
  script: $PYTHON_LIB/google/appengine/ext/remote_api/handler.py
  login: admin

и развернуть снова.

person Sugiana    schedule 16.04.2011

Вы можете подключиться к удаленной оболочке, используя

python manage.py remote shell

и только если вы создали приложение App Engine с аутентификацией учетных записей Google. Но для remote_api требуется развернутое приложение, и поскольку ваш

python manage.py deploy

не работает, указанная выше ошибка является нормальным явлением.

Какую ошибку вы получаете при попытке развернуть?

person Eren Güven    schedule 13.04.2011