2012-12-11 2 views
3

Python 2.7이 포함 된 Google App Engine에서 Flask 0.9/Werkzeug 0.8.3을 실행 중이므로 Werkzeug 디버거를 실행하고 싶습니다. 플라스크 응용 프로그램이있을 수 있습니다 그것은뿐만 아니라 '경로'가 될 수Google App Engine에서 Flask 디버그 모드를 실행할 수 없습니다.

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

하지만, 어떤 속성 : werkzeug_appengine_debugger를 사용하려고하면 나는 다음과 같은 콘솔에서 예외가있다.

애플리케이션 제목에서
application 
    __init__.py 
    main.py 
    ...  
flask 
flaskext 
werkzeug 
werkzeug_debugger_appengine 
... 
app.yaml 

내가 타겟팅하는 WSGI 응용 프로그램 :

내 파일 트리 flask-appengine-template에서 차용, 다음과 같습니다

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) 

도 여전히 같은 예외를 throw합니다.

GAE + Flask 가이드 또는 기사에서이 문제를 보았습니다. 왜 그렇게 될 수 있죠?

답변

4
app = DebuggedApplication(app, True) 

은 다음과 같아야합니다

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

the recommended way to add middleware in Flask - 당신이 할 수있는 그런 식으로, 워드 프로세서, 말 그대로 "flask.Flask 응용 프로그램 클래스에 대한 참조를 유지합니다."

관련 문제