Django中的wsgi:application


  • 基本:
    •   uwsgi,uWSGI,WSGI三者關系

  •  Django中wsgi application 調用最終返回的是response,在上一篇中,我們在handler.run()函數---setup_environ()函數中,將request原始信息復制到wsgi.input中
    • 在回調函數的slef.request_class(env)會進一步封裝成我們熟悉的request對象  
      class WSGIHandler(base.BaseHandler):
          request_class = WSGIRequest
      
          def __init__(self, *args, **kwargs):
              super().__init__(*args, **kwargs)
              self.load_middleware()
      
          def __call__(self, environ, start_response):
      
              set_script_prefix(get_script_name(environ))
              signals.request_started.send(sender=self.__class__, environ=environ)
              request = self.request_class(environ)
              response = self.get_response(request)
              response._handler_class = self.__class__
              status = '%d %s' % (response.status_code, response.reason_phrase)
              response_headers = [
                  *response.items(),
                  *(('Set-Cookie', c.output(header='')) for c in response.cookies.values()),
              ]
              start_response(status, response_headers)
              if getattr(response, 'file_to_stream', None) is not None and environ.get('wsgi.file_wrapper'):
      
                  response.file_to_stream.close = response.close
                  response = environ['wsgi.file_wrapper'](response.file_to_stream, response.block_size)
      
              return respons

       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM