我想db
在发生异常时回滚我的会话,所以我尝试了:
@app.teardown_request
def teardown_request(exception):
print "Teardown 1 {0!r}".format(exception)
if exception:
print ">>>> Exception Happaned <<<<"
db.session.rollback()
db.session.remove()
print "good"
db.session.remove()
我测试通过强制我的代码出错来引发异常,即使使用这个:
raise Exception("bacoff")
但它总是打印"Teardown 1 None"
和"good"
.
让我感到困惑的是,一旦我关闭 DEBUG 模式app.run(debug=False)
,异常显示正确:
Teardown 1 Exception('bacoff',)
>>>> Exception Happaned <<<<
good
所以,我不知道这是Flask框架的错误,还是我的配置错误......
我的环境是:
- 美丽汤 3.2.1
- 烧瓶 0.9
- 烧瓶登录 0.1.3
- 烧瓶邮件 0.8.2
- Flask-OpenID 1.1.1
- Flask-SQLAlchemy 0.16
- 烧瓶-WTF 0.8.3
- Flask-WhooshAlchemy 0.55a
- Jinja2 2.6
- SQLAlchemy 0.8.1
- 坦皮塔 0.5.1
- WTForms 1.0.3
- Werkzeug 0.8.3
- 嗖嗖 2.4.1
- 闪光灯 1.2
- 装饰器 3.4.0
- lxml 3.2.0
- pycurl 7.19.0
- python-openid 2.2.5
- 请求 1.2.0
- sqlalchemy-迁移 0.7.2
- wsgiref 0.1.2