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フレームワークのバグなのか、私の設定ミスなのかはわかりません...
私のENVは:
- 美しいスープ 3.2.1
- フラスコ 0.9
- Flask ログイン 0.1.3
- フラスコメール 0.8.2
- フラスコ-OpenID 1.1.1
- Flask-SQLAlchemy 0.16
- フラスコ-WTF 0.8.3
- Flask-WhooshAlchemy 0.55a
- ジンジャ2 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-migrate 0.7.2
- wsgiref 0.1.2