app engine python就是这个bug:当打开交换机交互式控制台时

时间:2011-12-25 13:37:30

标签: python google-app-engine

当我在localhost:8080工作时,当我打开交互式控制台并执行某些操作时,比如获取Kind等列表(地址:http://localhost:8080/_ah/admin/interactive),它会给我这个错误:

<class 'google.appengine.dist._library.UnacceptableVersionError'>: django 1.2 was requested, but 0.96.4.None is already in use

在类似的情况下,这种错误发生了好几次。它会被卡住,直到dev_appserver.py

重新启动localhost

这是一个错误还是我做错了什么?

我在交互式控制台上所做的示例:

from myapp.models import *
for room in Room.all():
    room.update_time = room.create_time
    room.put()

注意:
这是我的django_bootstrap

import os
import sys
import logging
import __builtin__
from google.appengine.ext.webapp import util

import pickle
sys.modules['cPicle'] =pickle

logging.getLogger().setLevel(logging.INFO)

sys.path.insert(0, os.path.abspath((os.path.dirname(__file__))))

import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'settings'

from google.appengine.dist import use_library
use_library('django', '1.2')


import django.core.handlers.wsgi

def main():
    application = django.core.handlers.wsgi.WSGIHandler()
    util.run_wsgi_app(application)    

if __name__ == '__main__':    
    main()

2 个答案:

答案 0 :(得分:1)

这是由您加载网址的顺序引起的。首先进入管理页面,这会加载0.96,这会在处理程序尝试加载1.2时导致错误。

如果将use_library代码添加到appengine_config.py,则会为每个网址加载1.2。

步骤如下所述:App engine default Django version change

答案 1 :(得分:0)

根文件夹中的index.ymal说:

# AUTOGENERATED

# This index.yaml is automatically updated whenever the dev_appserver
# detects that a new type of query is run.  If you want to manage the
# index.yaml file manually, remove the above marker line (the line
# saying "# AUTOGENERATED").  If you want to manage some indexes
# manually, move them above the marker line.  The index.yaml file is
# automatically uploaded to the admin console when you next deploy
# your application using appcfg.py.

因此,每次打开http://localhost:8080/_ah/admin/datastore时,此文件都会更新:它仍具有相同的内容,但操作系统上的文件时间戳表示已更新。

我想在这里,由于http://localhost:8080看到models.py不一样,所以它可以加载它然后无法启动django_bootstrap。

但是,如果我先打开http://localhost:8080/_ah/admin/datastore然后再打开http://localhost:8080,它就能正常运行。所以这就是为什么有时我有时会得到错误:它取决于各自的订单网址