ứng dụng đơn giản này, có hai teardown_request
xử lý, và tôi mong đợi cả hai người trong số họ được kêu gọi mọi yêu cầu, không có vấn đề gì xảy ra trong việc thực hiện xem, theo documentationTại sao chỉ có một chức năng Flask teardown_request được gọi khi xem tăng ngoại lệ?
import flask
import werkzeug.exceptions
app = flask.Flask(__name__)
@app.teardown_request
def teardown1(response):
print "Teardown 1"
return response
@app.teardown_request
def teardown2(response):
print "Teardown 2"
return response
@app.route("/")
def index():
return "chunky bacon"
@app.route("/httpexception")
def httpexception():
raise werkzeug.exceptions.BadRequest("no bacon?")
@app.route("/exception")
def exception():
raise Exception("bacoff")
if __name__ == "__main__":
app.run(port=5000)
Tuy nhiên, khi tôi chạy nó và đưa ra yêu cầu với ba quan điểm ngược lại, tôi nhận được đầu ra sau đây:
Teardown 2 Teardown 1 127.0.0.1 - - [15/Nov/2011 18:53:16] "GET/HTTP/1.1" 200 - Teardown 2 Teardown 1 127.0.0.1 - - [15/Nov/2011 18:53:27] "GET /httpexception HTTP/1.1" 400 - Teardown 2 127.0.0.1 - - [15/Nov/2011 18:53:33] "GET /exception HTTP/1.1" 500 -
Chỉ một trong những teardown_request
chức năng đang được gọi khi một ngoại lệ mà không có nguồn gốc từ werkzeug.exceptions.HTTPException
được nâng lên bởi quan điểm cuối cùng. Bất kỳ ý tưởng tại sao, hoặc là một lỗi trong bình?
+1 - cũng xin cảm ơn bạn đã đăng câu trả lời! –