django non rel和google app引擎:远程api问题

时间:2011-02-28 03:52:54

标签: python google-app-engine django-nonrel

我正在Google App Engine上部署django-nonrel应用。该应用程序部署正常,但我无法登录到远程shell。

这是我的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

3 个答案:

答案 0 :(得分:2)

在app.yaml部分处理程序上添加此项,第一项:


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

再次部署。

答案 1 :(得分:1)

问题在于

  

获取/_ah/remote_api(/.*)? HTTPS / 1.1

如果您注意到,网址包含无效字符“(/.*)?”走向终点。

假设您正在使用django-nonrel,这是一个简单的修复。打开文件

djangoappengine/db/base.py

并更改行

self.remote_api_path = handler.url

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

这应该注意确保URL正确。

答案 2 :(得分:0)

您可以使用

连接到远程shell
python manage.py remote shell

仅当您使用Google帐户身份验证创建App Engine应用时。但是remote_api需要一个部署的应用程序,因为你的

python manage.py deploy

失败,上述错误是正常的。

尝试部署时会出现什么错误?