我正在使用Apache mod_wsgi来提供django。我还使用Django-cuser中间件,使用户信息始终可用。我无法真正理解这个中间件是如何工作的。具体的源代码:
class CuserMiddleware(object):
@classmethod
def get_user(cls, default=None):
"""
Retrieve user info
"""
return cls.__users.get(threading.current_thread(), default)
@classmethod
def set_user(cls, user):
"""
Store user info
"""
if isinstance(user, str):
user = User.objects.get(username=user)
cls.__users[threading.current_thread()] = user
为什么使用threading.current_thread()作为用户的密钥?正如我所说,Apache并没有为请求创建不同的theads。