python - 如何在 Flask after_request 中访问请求上下文?
问题描述
所以,有3个概念:
- 应用程序上下文 - 存储在
g
- 会话上下文 - 存储在
session
(跨请求存储数据,可能使用 cookie) - 请求上下文 - ???
在 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???()
。
解决方案
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)
推荐阅读
- c - 我可以通过 C 中的 sprintf 更改文本颜色吗?
- android - CoordinatorLayout 中的 ViewPager(用于粘性标题)导致滚动中断
- ruby - 同步两个日历?
- python - 计算毕达哥拉斯定理的一面,使用函数
- haskell - 为什么不能在 Haskell 中使用没有 'let..in' 块的 'Just' 语法?
- python - Matplotlib 未保存所有绘图
- ffmpeg - FFMPEG 我可以获取每帧的音频音量级别以在表达式中使用吗?
- sql - 添加摘要行时如何在没有第二列的情况下进行 GROUP BY ROLLUP
- python - 操纵 Pandas 数据框进入很长时间?格式
- python - 如何访问列表列表中的特定元素以执行 np.mean 函数?