首页 > 解决方案 > 如何在 Flask after_request 中访问请求上下文?

问题描述

所以,有3个概念:

在 Flask 的文档中找不到。

我还查看了指​​南:https ://pythonise.com/feed/flask/python-before-after-request - 他们似乎将请求上下文与会话上下文混淆了。

我的代码(它的模式):

def handle_path1(event, request_context):
    return gen_response(event, request_context)

app = Flask(__name__)
app.add_url_rule('/path1', '/path1', handle_path1)

@app.after_request
def after_request_response_audit(response):
    request_context = ???SOMEHOW_GET_REQUEST_CONTEXT???()
    logging.info('%s %s' % (
        request_context['response_measure1'], 
        request_context['response_measure2']
    ))

@app.after_request
def after_request_response_measure2(response):
    request_context = ???SOMEHOW_GET_REQUEST_CONTEXT???()
    request_context['response_measure2'] = measure_response2(response)

@app.after_request
def after_request_response_measure1(response):
    request_context = ???SOMEHOW_GET_REQUEST_CONTEXT???()
    request_context['response_measure1'] = measure_response1(response)

问题是怎么做???SOMEHOW_GET_REQUEST_CONTEXT???()

标签: pythonflask

解决方案


Try this! It is thread safe

from flask import request
@app.after_request
def after_request_response_measure1(response):
    request_context = SOMEHOW_GET_REQUEST_CONTEXT(request)
    request_context['response_measure1'] = measure_response1(response)

推荐阅读