python - 无法在 Google App Engine 上运行 Flask Debug模式

标签 python google-app-engine flask werkzeug

我在使用 Python 2.7 的 Google App Engine 上运行 Flask 0.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 教程或文章中我都看到过这个问题。为什么会发生这种情况?

最佳答案

app = DebuggedApplication(app, True)

应该是:

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

这是 the recommended way to add middleware in Flask - 这样你就可以,正如文档所说,“保留对 flask.Flask 应用程序类的引用。”

关于python - 无法在 Google App Engine 上运行 Flask Debug模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13812123/

相关文章:

python - 禁用表单中缺少键的 "400 Bad Request"错误

python - 将上限和下限应用于 Pandas Dataframe

python - 从父目录导入函数 `ModuleNotFoundError: No module named ' 函数'`

Python:检查上传的文件是否为jpg

java - Google Cloud App Engine cron 作业 - 不调用服务

python - Flask-SQLAlchemy:如何有条件地插入或更新一行

python - 从列表创建字典

重新启动开发服务器后,Java Google App Engine 不一致的数据丢失

python - 在本地运行 Flask 应用程序的规范方式

ruby - Rakefile - 停止多任务中的每一个任务