Django如何保证中间件的__init__只被调用一次?

时间:2015-07-23 06:27:06

标签: python django middleware django-middleware

Django的文档:

  

与每个请求调用一次的process_ *方法不同,当Web服务器响应第一个请求时,__init__只被调用一次。

Django如何保证中间件对象只被初始化一次? Web服务器可以启动多个python解释器实例来处理请求,对吗?

1 个答案:

答案 0 :(得分:3)

这意味着每个解释器实例一次。请注意实施:

class WSGIHandler(base.BaseHandler):
  # ...
  def __call__(self, environ, start_response):
    # ...
    if self._request_middleware is None:
        self.load_middleware()

您可以阅读django/core/handlers/wsgi.pydjango/core/handlers/base.py(特别是Basehandler.load_middleware)了解更多详情。