Flask DebuggedApplication, вызывающий ошибку выполнения в Google App Engine

Когда я использую код app.wsgi_app = DebuggedApplication(app), рекомендованный https://stackoverflow.com/a/13821624/3164117 и запись в блоге Я получаю красиво отформатированная ошибка, которую отлично отображает отладчик Flask. Без этой строки кода ошибки нет, и мой существующий код работает нормально.

Точная ошибка:

File "/Users/DanielFranklin/Desktop/etch/etchcode/lib/flask/app.py", line 1969, in __call__
    return self.wsgi_app(environ, start_response)
File "/Users/DanielFranklin/Desktop/etch/etchcode/lib/werkzeug/debug/__init__.py", line 166, in __call__
    if request.args.get('__debugger__') == 'yes':
File "/Users/DanielFranklin/Desktop/etch/etchcode/lib/werkzeug/utils.py", line 71, in __get__
    value = self.func(obj)
File "/Users/DanielFranklin/Desktop/etch/etchcode/lib/werkzeug/wrappers.py", line 429, in args
    cls=self.parameter_storage_class)
File "/Users/DanielFranklin/Desktop/etch/etchcode/lib/werkzeug/urls.py", line 723, in url_decode
    include_empty, errors))
File "/Users/DanielFranklin/Desktop/etch/etchcode/lib/werkzeug/datastructures.py", line 373, in __init__
    for key, value in mapping or ():
File "/Users/DanielFranklin/Desktop/etch/etchcode/lib/werkzeug/urls.py", line 779, in _url_decode_impl
    key = url_unquote_plus(key, charset, errors)
File "/Users/DanielFranklin/Desktop/etch/etchcode/lib/werkzeug/urls.py", line 545, in url_unquote_plus
    return url_unquote(s, charset, errors)
File "/Users/DanielFranklin/Desktop/etch/etchcode/lib/werkzeug/urls.py", line 522, in url_unquote
    rv = _unquote_to_bytes(string, unsafe)
File "/Users/DanielFranklin/Desktop/etch/etchcode/lib/werkzeug/urls.py", line 351, in _unquote_to_bytes
    if isinstance(string, text_type):
RuntimeError: maximum recursion depth exceeded while calling a Python object

person Daniel F    schedule 04.01.2016    source источник


Ответы (1)


Как и в сообщении, которое вы цитируете, оно должно быть app.wsgi_app = DebuggedApplication(app.wsgi_app, True), НЕ, как вы говорите, app.wsgi_app = DebuggedApplication(app) -- обратите внимание, что вы забыли True 2-й аргумент (я думаю, незначительная проблема) и более убедительно то, что вы оборачиваете саму app вместо того, чтобы оборачивать app.wsgi_app, как вы должны, и последняя ошибка, которую вы допустили, действительно, вероятно, вызовет убегающую рекурсию, которую вы наблюдаете.

person Alex Martelli    schedule 04.01.2016