App Engine _ah страница входа не работает локально - PullRequest
2 голосов
/ 07 ноября 2010

Всякий раз, когда я нажимаю на ссылку, созданную users.create_login_url(), я получаю сообщение об ошибке (показано ниже). При развертывании это работает, но не работает локально. Что не так?

Вот код:

import random
import os

from google.appengine.api import users
from google.appengine.ext import webapp, db
from google.appengine.ext.webapp import util, template
from google.appengine.ext.webapp.util import run_wsgi_app


class MainHandler(webapp.RequestHandler):
    def get(self):
        url = users.create_login_url('/quote')
        link = '<a href="%s">Login</a>' % url
        self.response.out.write(link)

class QuoteHandler(webapp.RequestHandler):
    def get(self):
        self.response.out.write("Quote Handler!")

    def new(self):
        self.response.out.write("New quote")


def main():
    application = webapp.WSGIApplication([(r'/quote/(.*)',QuoteHandler),('/', MainHandler)],
                                         debug=True)
    util.run_wsgi_app(application)


if __name__ == '__main__':
    main()

И вот ошибка, которую он мне дает:

Traceback (most recent call last):
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3211, in _HandleRequest
    self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 3154, in _Dispatch
    base_env_dict=env_dict)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 527, in Dispatch
    base_env_dict=base_env_dict)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2452, in Dispatch
    CGIDispatcher.Dispatch(self, *args, **kwargs)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2404, in Dispatch
    self._module_dict)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2441, in curried_exec_cgi
    return ExecuteCGI(*args, **kwargs)
  File "C:\Program Files\Google\google_appengine\google\appengine\tools\dev_appserver.py", line 2312, in ExecuteCGI
    logging.debug('Executing CGI with env:\n%s', pprint.pformat(env))
  File "C:\Python27\lib\pprint.py", line 60, in pformat
    return PrettyPrinter(indent=indent, width=width, depth=depth).pformat(object)
  File "C:\Python27\lib\pprint.py", line 119, in pformat
    self._format(object, sio, 0, 0, {}, 0)
  File "C:\Python27\lib\pprint.py", line 137, in _format
    rep = self._repr(object, context, level - 1)
  File "C:\Python27\lib\pprint.py", line 230, in _repr
    self._depth, level)
  File "C:\Python27\lib\pprint.py", line 242, in format
    return _safe_repr(object, context, maxlevels, level)
  File "C:\Python27\lib\pprint.py", line 284, in _safe_repr
    for k, v in _sorted(object.items()):
  File "C:\Python27\lib\pprint.py", line 75, in _sorted
    with warnings.catch_warnings():
  File "C:\Python27\lib\warnings.py", line 327, in __init__
    self._module = sys.modules['warnings'] if module is None else module
KeyError: 'warnings'

EDIT Версия SDK: 1.3.8 Python: 2,7

Ответы [ 3 ]

1 голос
/ 07 ноября 2010

Вы используете Python 2.7, который не поддерживается Google App Engine (проблема здесь ).
Вам необходимо понизиться до Python 2.5 дозаставить это работать.

1 голос
/ 09 ноября 2010

Я исправил эту проблему в Fedora 14 с Python 2.7, закомментировав следующее:

# logging.debug('Executing CGI with env:\n%s', pprint.pformat(env))

на линии 2312 из dev_appserver.py, расположенной по адресу google_appengine_sdk_dir/google/appengine/tools

Вот трассировка стека, где вы видите строку 2312, которая вызвала исключение:

Traceback (most recent call last):
  File "/google_app_sdk/google/appengine/tools/dev_appserver.py", line 3211, in _HandleRequest
    self._Dispatch(dispatcher, self.rfile, outfile, env_dict)
  File "/google_app_sdk/google/appengine/tools/dev_appserver.py", line 3154, in _Dispatch
    base_env_dict=env_dict)
  File "/google_app_sdk/google/appengine/tools/dev_appserver.py", line 527, in Dispatch
    base_env_dict=base_env_dict)
  File "/google_app_sdk/google/appengine/tools/dev_appserver.py", line 2452, in Dispatch
    CGIDispatcher.Dispatch(self, *args, **kwargs)
  File "/google_app_sdk/google/appengine/tools/dev_appserver.py", line 2404, in Dispatch
    self._module_dict)
  File "/google_app_sdk/google/appengine/tools/dev_appserver.py", line 2441, in curried_exec_cgi
    return ExecuteCGI(*args, **kwargs)
  File "/google_app_sdk/google/appengine/tools/dev_appserver.py", line 2312, in ExecuteCGI
    logging.debug('Executing CGI with env:\n%s', pprint.pformat(env))
  File "/usr/lib64/python2.7/pprint.py", line 60, in pformat
    return PrettyPrinter(indent=indent, width=width, depth=depth).pformat(object)
  File "/usr/lib64/python2.7/pprint.py", line 119, in pformat
    self._format(object, sio, 0, 0, {}, 0)
  File "/usr/lib64/python2.7/pprint.py", line 137, in _format
    rep = self._repr(object, context, level - 1)
  File "/usr/lib64/python2.7/pprint.py", line 230, in _repr
    self._depth, level)
  File "/usr/lib64/python2.7/pprint.py", line 242, in format
    return _safe_repr(object, context, maxlevels, level)
  File "/usr/lib64/python2.7/pprint.py", line 284, in _safe_repr
    for k, v in _sorted(object.items()):
  File "/usr/lib64/python2.7/pprint.py", line 75, in _sorted
    with warnings.catch_warnings():
  File "/usr/lib64/python2.7/warnings.py", line 327, in __init__
    self._module = sys.modules['warnings'] if module is None else module
KeyError: 'warnings'

Комментируя, что одна строка, кажется, заставляет все работать нормально, других ошибок нет, и мне не нужно переходить на Python 2.5.

0 голосов
/ 07 ноября 2010

Я видел эту проблему - вы используете неверную версию Python локально.

Установите Python 2.5, и эта проблема исчезнет - это для меня.

http://www.python.org/download/releases/2.5.5/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...