如何在Flask的teardown_request中访问当前响应的status_code?

时间:2016-09-22 19:29:48

标签: python flask

我正在与内部日志记录系统连接,我想从Flask的status_code回调中获取当前响应的teardown_requesthttp://flask.pocoo.org/docs/0.11/api/#flask.Flask.teardown_request。我喜欢它保证被调用,我可以获得我的目的所需的所有其他信息。

我可以访问当前响应,如果我连接到status_code信号,则为request_finished

def request_finished_listener(sender, response):
    print(response.status_code)

request_finished.connect(request_finished_listener)

但如果可能的话,我想在teardown_request内完成我的所有数据收集。

1 个答案:

答案 0 :(得分:3)

你做不到。生成响应后,teardown_request被称为清理,它无权访问响应。如果您需要访问Flask内部的响应,则应使用request_finished信号或after_request装饰器。 teardown_request仅用于清理资源。

如果您需要记录有关响应的内容并且绝对不想使用request_finishedafter_request,则必须将Flask应用程序包装在WSGI中间件中。