2013-06-29 34 views
2

最近我開始使用threading.local()作爲一些apis來存儲和訪問請求持續時間的狀態,而不必訪問請求對象。Django和threading.local()的怪癖?

所以可以說我有一定代碼:

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

多久即_thread_local.theme可變持續?我是否必須在請求結束時手動取消設置,比如自定義中間件?或者它在完成處理請求後自動被Django刪除?

回答

1

它將持續長達threading.local()持續 ,這是請求的生存期 。之後沒有什麼特別的要求。 Django在管理線程本地的狀態方面沒有太多的工作,所以在請求結束後,事情可能會停滯不前。這真的是一個問題嗎?您可能最終將該值設置爲下一個請求中需要的值。