日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

服務器動態資源請求

1. 瀏覽器請求動態頁面過程

Python服務器動態資源請求

 

2. WSGI

怎么在你剛建立的Web服務器上運行一個Django應用和Flask應用,如何不做任何改變而適應不同的web架構呢?

在以前,選擇 Python web 架構會受制于可用的web服務器,反之亦然。如果架構和服務器可以協同工作,那就好了:

Python服務器動態資源請求

 

但有可能面對(或者曾有過)下面的問題,當要把一個服務器和一個架構結合起來時,卻發現他們不是被設計成協同工作的:

Python服務器動態資源請求

 

那么,怎么可以不修改服務器和架構代碼而確保可以在多個架構下運行web服務器呢?答案就是 Python Web Server Gateway Interface (或簡稱 WSGI,讀作“wizgy”)。

Python服務器動態資源請求

 

WSGI允許開發者將選擇web框架和web服務器分開。可以混合匹配web服務器和web框架,選擇一個適合的配對。比如,可以在Gunicorn 或者 Nginx/uWSGI 或者 Waitress上運行 Django, Flask, 或 Pyramid。真正的混合匹配,得益于WSGI同時支持服務器和架構:

Python服務器動態資源請求

 

web服務器必須具備WSGI接口,所有的現代Python Web框架都已具備WSGI接口,它讓你不對代碼作修改就能使服務器和特點的web框架協同工作。

WSGI由web服務器支持,而web框架允許你選擇適合自己的配對,但它同樣對于服務器和框架開發者提供便利使他們可以專注于自己偏愛的領域和專長而不至于相互牽制。其他語言也有類似接口:JAVA有Servlet API,Ruby 有 Rack。

3.定義WSGI接口

WSGI接口定義非常簡單,它只要求Web開發者實現一個函數,就可以響應HTTP請求。我們來看一個最簡單的Web版本的“Hello World!”:

def Application(environ, start_response):
 start_response('200 OK', [('Content-Type', 'text/html')])
 return 'Hello World!'

上面的application()函數就是符合WSGI標準的一個HTTP處理函數,它接收兩個參數:

environ:一個包含所有HTTP請求信息的dict對象;

start_response:一個發送HTTP響應的函數。

整個application()函數本身沒有涉及到任何解析HTTP的部分,也就是說,把底層web服務器解析部分和應用程序邏輯部分進行了分離,這樣開發者就可以專心做一個領域了

不過,等等,這個application()函數怎么調用?如果我們自己調用,兩個參數environ和start_response我們沒法提供,返回的str也沒法發給瀏覽器。

所以application()函數必須由WSGI服務器來調用。有很多符合WSGI規范的服務器。而我們此時的web服務器項目的目的就是做一個既能解析靜態網頁還可以解析動態網頁的服務器

4. web服務器-----WSGI協議---->web框架 傳遞的字典

{
 'HTTP_ACCEPT_LANGUAGE': 'zh-cn',
 'wsgi.file_wrapper': <built-infunctionuwsgi_sendfile>,
 'HTTP_UPGRADE_INSECURE_REQUESTS': '1',
 'uwsgi.version': b'2.0.15',
 'REMOTE_ADDR': '172.16.7.1',
 'wsgi.errors': <_io.TextIOWrappername=2mode='w'encoding='UTF-8'>,
 'wsgi.version': (1,0),
 'REMOTE_PORT': '40432',
 'REQUEST_URI': '/',
 'SERVER_PORT': '8000',
 'wsgi.multithread': False,
 'HTTP_ACCEPT': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
 'HTTP_HOST': '172.16.7.152: 8000',
 'wsgi.run_once': False,
 'wsgi.input': <uwsgi._Inputobjectat0x7f7faecdc9c0>,
 'SERVER_PROTOCOL': 'HTTP/1.1',
 'REQUEST_METHOD': 'GET',
 'HTTP_ACCEPT_ENCODING': 'gzip,deflate',
 'HTTP_CONNECTION': 'keep-alive',
 'uwsgi.node': b'ubuntu',
 'HTTP_DNT': '1',
 'UWSGI_ROUTER': 'http',
 'SCRIPT_NAME': '',
 'wsgi.multiprocess': False,
 'QUERY_STRING': '',
 'PATH_INFO': '/index.html',
 'wsgi.url_scheme': 'http',
 'HTTP_USER_AGENT': 'Mozilla/5.0(macintosh;IntelMacOSX10_12_5)AppleWebKit/603.2.4(KHTML,likeGecko)Version/10.1.1Safari/603.2.4',
 'SERVER_NAME': 'ubuntu'
}

應用程序示例

import time
def application(environ, start_response):
 status = '200 OK'
 response_headers = [('Content-Type', 'text/html')]
 start_response(status, response_headers)
 return str(environ) + '==Hello world from a simple WSGI application!--->%sn' % time

分享到:
標簽:服務器 Python
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定