Как Django гарантира __init__ на междинния софтуер да бъде извикан само веднъж?

Документация на Django:

За разлика от методите process_*, които се извикват веднъж на заявка, __init__ се извиква само веднъж, когато уеб сървърът отговори на първата заявка.

Как Django гарантира, че мидълуерният обект се инициализира само веднъж? Уеб сървърът може да стартира множество екземпляри на интерпретатор на python, за да обработва заявки, нали?


person NeoWang    schedule 23.07.2015    source източник
comment
Предполагам, че означава веднъж на екземпляр на интерпретатора.   -  person DanielB    schedule 23.07.2015


Отговори (1)


Това означава веднъж на екземпляр на интерпретатора. Обърнете внимание на изпълнението:

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

Можете да прочетете django/core/handlers/wsgi.py и django/core/handlers/base.py (особено Basehandler.load_middleware) за повече подробности.

person DanielB    schedule 23.07.2015