我正在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
答案 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)
您可以使用
连接到远程shellpython manage.py remote shell
仅当您使用Google帐户身份验证创建App Engine应用时。但是remote_api需要一个部署的应用程序,因为你的
python manage.py deploy
失败,上述错误是正常的。
尝试部署时会出现什么错误?