Django中间件线程安全吗?

Dee*_*pan 13 python django middleware thread-safety

Django中间件线程安全吗?我能做这样的事吗,

class ThreadsafeTestMiddleware(object):

    def process_request(self, request):
        self.thread_safe_variable = some_dynamic_value_from_request

    def process_response(self, request, response):
        # will self.thread_safe_variable always equal to some_dynamic_value_from_request?
Run Code Online (Sandbox Code Playgroud)

Ste*_*yne 28

为什么不将变量绑定到请求对象,如下所示:

class ThreadsafeTestMiddleware(object):

    def process_request(self, request):
        request.thread_safe_variable = some_dynamic_value_from_request

    def process_response(self, request, response):
        #... do something with request.thread_safe_variable here ...
Run Code Online (Sandbox Code Playgroud)


Dan*_*man 8

不,绝对不是.我在这里写这个问题- 结果是在中间件类中存储状态是一个非常糟糕的主意.

史蒂夫指出,解决方案是将其添加到请求中.