還能不能愉快地起一個web服務啦?——1st Step!白話http和代碼交互的那點兒事兒~

  學寫python的時候,咱們多多少少都接觸到了web程序,然而你有沒有想過,當瀏覽器發送了一個http請求時,等待接收這個請求的後端代碼是一種什麼樣的思想感情?php

  就像下面這張圖裏畫的同樣,後端也許是一段java代碼,也許是php代碼,固然,若是代碼出自我手,最可能的仍是一段python代碼。這就比如,當你在社交軟件上給一個陌生人發了一條消息,對面這我的多是英國人、印度人也有多是一隻羊或者一隻狗。。。那麼問題來了,他們怎麼知道你在說啥?固然了,在web服務的世界裏沒有現實中那麼複雜,咱們不須要考慮後臺接收請求的是一隻羊。。。接下來咱們就來看看,在url和代碼之間到底發生了什麼見不得人的事兒~java

  

  首先,當咱們寫了一段代碼能夠被http訪問的時候,咱們就創建了一個webserver。從下圖中咱們不難看出,這就是瀏覽器和web服務器之間的平常工做,對於服務器來講,要作的5件事情中,只有第3件是根據請求的不一樣在發生變化的:python

  

 

  所以,本着解耦的思想,就有人提出了新的方案,將服務器端反覆作的事情獨立出來,封裝起來,對於程序員來講,咱們只須要關注處理請求的部分,有專門的邏輯替咱們處理這萬年不變的4步,是否是就使得代碼簡潔了不少?程序員

  然而,當咱們這麼作以後,服務器和app之間就再也不是緊密團結在一塊兒的總體,服務器必須知道要講接收到的請求、參數以什麼方式傳達到app端,這就是咱們在django中可使用request.method、request.POST.get等方法的緣由——約好了呀,說高大上點兒,這種約定就叫作協議web

  

  下圖是咱們在寫django時常常作的事情,左側是一個http請求,右側是python代碼,咱們只須要在代碼裏寫一個函數,url配一配,就可使用左側的url請求到後端的代碼,爲何如此順利,是什麼讓http和python代碼之間的代溝消失了?django

   

  

  

  以Django框架爲例,Django在這個過程當中作了哪些事兒呢?它就是很貼心的把整個服務器要作的事情以及服務器和app交互的過程給封裝起來了呀~~~後端

  這麼提及來,Django對咱們的代碼來講,真是又當爹又當媽的模範家長啊!瀏覽器

  

  固然啦!除了Django以外,python還有不少其餘的web框架、模塊都作了一樣的封裝,他們也能對http請求進行分析,並承擔起和後臺代碼交互的重任,然而咱們知道人與人之間即使是交流一樣的事情也有不少種不一樣的表達方式,所以,咱們說,雖然一樣是作http和代碼的交互工做,但對協議的定義可能不盡相同。服務器

  下面列舉一些常見的 Python HTTP 服務器,以及它們目前的大體發展狀況,以便用戶的對比選擇:app

Name Version http 1.1 Flavour Repo. Community
Gunicorn 0.6.4 No processor/thread GIT #gunicorn
uWSGI Trunk (253) Yes processor/thread repo Mailing List
FAPWS3 0.3.1 No processor/thread GIT Google Groups
Aspen 0.8 No processor/thread SVN Google Groups
Mod_WSGI 3.1 Yes processor/thread SVN Google Groups
wsgiref Py 2.6.4 No processor/thread SVN Mailing List
CherryPy 3.1.2 Yes processor/thread SVN Planet, IRC
Magnum Py 0.2 No processor/thread SVN Google Groups
Twisted 10.0.0 Yes processor/thread SVN Community
Cogen 0.2.1 Yes callback/generator SVN Google Groups
GEvent 0.12.2 Yes lightweight threads Mercurial Google Groups
Tornado 0.2 Yes callback/generator GIT Google Groups
Eventlet 0.9.6 Yes lightweight threads Mercurial Mailinglist
Concurrence tip Yes lightweight threads GIT Google Groups

 

參考:http://www.nowamagic.net/academy/detail/1330308

相關文章
相關標籤/搜索