Skip to main content
 首页 » 编程设计

python之Django 和 threading.local() 怪癖

2025年05月04日24pander-it

最近我开始使用 threading.local() 作为一些 api 在请求期间存储和访问状态而无需访问请求对象的方式。

假设我有特定的代码:

_thread_local = threading.local() 
_thread_local.theme = 'darkblues' 

_thread_local.theme 变量持续多长时间?我是否必须在请求结束时手动取消设置,比如自定义中间件?或者它在处理完请求后被 Django 自动删除?

请您参考如下方法:

它会持续到threading.local()持续 ,也就是请求的生命周期 。之后就不需要什么特别的了。 Django 没有做太多事情来管理线程本地的状态,所以在请求结束后事情可能会继续存在。这真的是个问题吗?您可能最终会将值设置为下一个请求中需要的值。