Django和threading.local()怪癖?

时间:2013-06-29 22:20:44

标签: python django thread-safety middleware

最近我开始使用threading.local()作为某些apis存储和访问状态的方式,而不必访问请求对象。

所以我想说我有一些代码:

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

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

1 个答案:

答案 0 :(得分:1)

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