Flask中after_request有哪些合适的使用场景?
Flask
after_request 适用场景及使用注意事项 适用场景
- 统一添加/修改响应头:比如全局配置CORS跨域头、安全防护头(X-Frame-Options、X-XSS-Protection等)、缓存控制头,不需要在每个视图函数单独重复配置
- 统一格式化响应内容:比如给所有接口的返回值套上统一的外层结构(如统一包含
code状态码、msg提示信息、data业务数据的JSON格式),减少重复代码 - 正常请求的日志统计:记录请求正常结束时的状态码、响应耗时、请求路径等运维统计信息
- 全局的响应后回调逻辑:比如给所有成功响应做内容脱敏、返回值签名等通用处理
使用注意事项
不要使用
after_request做数据库连接、文件句柄等资源的释放操作
这种用法存在明显缺陷:after_request只会在请求正常返回响应时触发,如果请求过程中出现未捕获的异常,after_request不会执行,会导致资源泄漏。
这类全局资源清理的场景,应该使用teardown_request替代,无论请求是否抛出异常,teardown_request都会在请求结束后执行,不会出现资源遗漏释放的问题。
内容的提问来源于stack exchange,提问作者MusicAndCode
相关产品推荐
相关产品推荐

