3

Python2.7を搭載したGoogleAppEngineでFlask0.9/ Werkzeug 0.8.3を実行していますが、Werkzeugデバッガーを実行したいのですが。werkzeug_appengine_debuggerを使用しようとした後、コンソールで次の例外が発生しました。

File "/path/to/application/main.py", line 14, in <module>
   @app.route('/')
AttributeError: 'DebuggedApplication' object has no attribute 'route'

これは、「ルート」だけでなく、Flaskアプリケーションが持つことができるあらゆる属性にすることができます。

私のファイルツリーは次のようになり、 flask-appengine-templateから借用しました:

application
    __init__.py
    main.py
    ...    
flask
flaskext
werkzeug
werkzeug_debugger_appengine
...
app.yaml

app.yamlで、WSGIアプリをターゲットにしています。

application: application_name
version: 1
runtime: python27
api_version: 1
threadsafe: true

builtins:
- appstats: on
- admin_redirect: on
- deferred: on
- remote_api: on

libraries:
- name: jinja2
  version: "2.6"
- name: markupsafe
  version: "0.15"

inbound_services:
- warmup

handlers:
- url: .*
script: application.app

そしてここに内容があります__init__.py

from flask import Flask
from werkzeug_debugger_appengine import get_debugged_app


## Starting app
app = Flask('application_name')


## Configuration
import os
import secrets

app.debug            = True
app.secret_key       = secrets.SECRET_KEY
app.csrf_session_key = secrets.CSRF_SESSION_KEY

# Auto-set debug mode based on App Engine dev environ
if 'SERVER_SOFTWARE' in os.environ and os.environ['SERVER_SOFTWARE'].startswith('Dev'):
    app.debug = True


## Extensions
if app.debug:
    app = get_debugged_app(app)


## Everything else
import main

werkzeug_appengine_debuggerがないと機能しません。次の初期化

app = DebuggedApplication(app, True)

それでも同じ例外をスローします。

GAE + Flaskのチュートリアルや記事では、この問題は見られませんでした。なぜそれが起こるのでしょうか?

4

1 に答える 1

4
app = DebuggedApplication(app, True)

する必要があります:

app.wsgi_app = DebuggedApplication(app.wsgi_app, True)

これは、Flaskにミドルウェアを追加するための推奨される方法です。これにより、ドキュメントに記載されているように、「flask.Flaskアプリケーションクラスへの参照を保持する」ことができます。

于 2012-12-11T13:37:06.380 に答える