一、什麼是 WSGI 。
在認識 flup 之前,得先認識一下 WSGI 。
WSGI 的全稱為: Python Web Server Gateway Interface v1.0 (Python Web 服務器網關介面),它是 Python 應用程式和 WEB 伺服器之間的一種借口,更多詳細的細節,可以參考 PEP333 。
它的作用,類似於FCGI 或 FASTCGI 之類的協議的作用。
WSGI 的目標,是要建立一個簡單的普遍適用的伺服器與 WEB 架構之間的介面。
WSGI 的特點是:簡單、可移植等。
二、什麼是 flup 。
WSGI 還只是一種規範,一種標準,它要完成的作用是用來定義 Python 應用程式要如何於 apache/lighttpd/nginx 等之類的 WEB 伺服器之間如何進行通訊和交換資訊,它不是實際可以直接拿來用的東西。而 flup 就是使用 Python 語言對 WSGI 的一種實現,是可以用於 Python 的應用開發中的一種工具或者說是一種庫。
flup 的官方網站為: http://trac.saddi.com/flup 。flup 屬於開源軟體,採用了 BSD 風格的開放源碼授權。
那麼, WSGI 除了 flup 外,還有沒有其他的實現呢,當然有,更多的實現,可以參考:
http://wiki.python.org/moin/WSGIImplementations
三、flup 支援的 WSGI 伺服器/網關
flup 支援三種 WSGI 伺服器/網關,分別為 AJP 1.3 , FastCGI ,和 SCGI 。
而對於 flup 支援的這三種 WSGI 伺服器/網關, flup 有分別提供了兩種不同風格的版本:線程版本和進程版本。
這樣, flup 實際就支援六種類型的 WSGI 伺服器/網關,分別為:
flup.server.ajp
flup.server.ajpfork
flup.server.fcgi
flup.server.fcgifork
flup.server.scgi
flup.server.scgi_fork
flup.server.cgi
使用的參考樣本如下:
def myapp(environ, start_response): start_response(’200 OK’, [('Content-Type', 'text/plain')]) return ['Hello World!\n'] if __name__ == ‘__main__’: from flup.server.fcgi import WSGIServer WSGIServer(myapp).run()
四、flup 在 Django 中的應用
作為一款非常著名和使用比較廣泛的 Python Web 開發架構,Django 中就應用到了 flup 。在 django/core/servers/fastcgi.py 檔案中,就調用了 django/core/handlers/wsgi.py 中的 WSGIHandler() 負責對 WSGI 的應用進行處理。
五、WEB 處理流程
nginx <——–(fastcgi)——-> flup(wsgi/django)
lighttpd <—–(fastcgi)——-> flup(wsgi/django)
apache<——(cgi/fastcgi/scgi/mod_wsgi)————> flup(wsgi/django)
小注:
Apache/lighttpd:
相當於一個request proxy,根據配置,把不同的請求轉寄給不同的server處理,例如靜態檔案請求自己處理,這個時候它就像一個web server,對於fastcgi/python這樣的請求轉寄給flup這樣的Server/Gateway進行處理
flup:
一個用python寫的web server,也就是cgi中所謂的Server/Gateway,它負責接受apache/lighttpd轉寄的請求,並調用你寫的程式 (application),並將application處理的結果返回到apache/lighttpd
fastcgi:
apache/lighttpd的一個模組,雖然flup可以作為一個獨立的web server使用,但是對於瀏覽器請求處理一般都交給 apache/lighttpd處理,然後由apache/lighttpd轉寄給flup處理,這樣就需要一個東西來把apache/lighttpd 跟flup聯絡起來,這個東西就是fastcgi,它通過環境變數以及socket將用戶端請求的資訊傳送給flup並接收flup返回的結果
web.py:
應該說有了上面的東西你就可以開始編寫你的web程式了,但是問題是你就要自己處理瀏覽器的輸入輸出,還有cookie、session、模板等各種各樣的問題了,web.py的作用就是幫你把這些工作都做好了,它就是所謂的web framework,另外一個出名的是django,不過感覺太複雜了,web.py差不多就夠用了
WSGI :
除了flup Server/Gateway外還有很多其他人的寫的Server/Gateway, 這個時候就會出問題了,如果你在flup上寫了一個程式,現在由於各種原因你要使用xdly了,這個時候你的程式也許就要做很多痛苦的修改才能使用 xdly server了,WSGI就是一個規範,他規範了flup這個服務應該怎麼寫,應該使用什麼方式什麼參數調用你寫的程式(application)等,當然同時也規範你的程式應該怎麼寫了,這樣的話,只要flup跟xdly都遵守WSGI的話,你的程式在兩個上面都可以使用了,flup就是一個WSGI server
一、什麼是 WSGI 。
在認識 flup 之前,得先認識一下 WSGI 。
WSGI 的全稱為: Python Web Server Gateway Interface v1.0 (Python Web 服務器網關介面),它是 Python 應用程式和 WEB 伺服器之間的一種借口,更多詳細的細節,可以參考 PEP333 。
它的作用,類似於FCGI 或 FASTCGI 之類的協議的作用。
WSGI 的目標,是要建立一個簡單的普遍適用的伺服器與 WEB 架構之間的介面。
WSGI 的特點是:簡單、可移植等。
二、什麼是 flup 。
WSGI 還只是一種規範,一種標準,它要完成的作用是用來定義 Python 應用程式要如何於 apache/lighttpd/nginx 等之類的 WEB 伺服器之間如何進行通訊和交換資訊,它不是實際可以直接拿來用的東西。而 flup 就是使用 Python 語言對 WSGI 的一種實現,是可以用於 Python 的應用開發中的一種工具或者說是一種庫。
flup 的官方網站為: http://trac.saddi.com/flup 。flup 屬於開源軟體,採用了 BSD 風格的開放源碼授權。
那麼, WSGI 除了 flup 外,還有沒有其他的實現呢,當然有,更多的實現,可以參考:
http://wiki.python.org/moin/WSGIImplementations
三、flup 支援的 WSGI 伺服器/網關
flup 支援三種 WSGI 伺服器/網關,分別為 AJP 1.3 , FastCGI ,和 SCGI 。
而對於 flup 支援的這三種 WSGI 伺服器/網關, flup 有分別提供了兩種不同風格的版本:線程版本和進程版本。
這樣, flup 實際就支援六種類型的 WSGI 伺服器/網關,分別為:
flup.server.ajp
flup.server.ajpfork
flup.server.fcgi
flup.server.fcgifork
flup.server.scgi
flup.server.scgi_fork
flup.server.cgi
使用的參考樣本如下:
def myapp(environ, start_response): start_response(’200 OK’, [('Content-Type', 'text/plain')]) return ['Hello World!\n'] if __name__ == ‘__main__’: from flup.server.fcgi import WSGIServer WSGIServer(myapp).run()
四、flup 在 Django 中的應用
作為一款非常著名和使用比較廣泛的 Python Web 開發架構,Django 中就應用到了 flup 。在 django/core/servers/fastcgi.py 檔案中,就調用了 django/core/handlers/wsgi.py 中的 WSGIHandler() 負責對 WSGI 的應用進行處理。
五、WEB 處理流程
nginx <——–(fastcgi)——-> flup(wsgi/django)
lighttpd <—–(fastcgi)——-> flup(wsgi/django)
apache<——(cgi/fastcgi/scgi/mod_wsgi)————> flup(wsgi/django)
小注:
Apache/lighttpd:
相當於一個request proxy,根據配置,把不同的請求轉寄給不同的server處理,例如靜態檔案請求自己處理,這個時候它就像一個web server,對於fastcgi/python這樣的請求轉寄給flup這樣的Server/Gateway進行處理
flup:
一個用python寫的web server,也就是cgi中所謂的Server/Gateway,它負責接受apache/lighttpd轉寄的請求,並調用你寫的程式 (application),並將application處理的結果返回到apache/lighttpd
fastcgi:
apache/lighttpd的一個模組,雖然flup可以作為一個獨立的web server使用,但是對於瀏覽器請求處理一般都交給 apache/lighttpd處理,然後由apache/lighttpd轉寄給flup處理,這樣就需要一個東西來把apache/lighttpd 跟flup聯絡起來,這個東西就是fastcgi,它通過環境變數以及socket將用戶端請求的資訊傳送給flup並接收flup返回的結果
web.py:
應該說有了上面的東西你就可以開始編寫你的web程式了,但是問題是你就要自己處理瀏覽器的輸入輸出,還有cookie、session、模板等各種各樣的問題了,web.py的作用就是幫你把這些工作都做好了,它就是所謂的web framework,另外一個出名的是django,不過感覺太複雜了,web.py差不多就夠用了
WSGI :
除了flup Server/Gateway外還有很多其他人的寫的Server/Gateway, 這個時候就會出問題了,如果你在flup上寫了一個程式,現在由於各種原因你要使用xdly了,這個時候你的程式也許就要做很多痛苦的修改才能使用 xdly server了,WSGI就是一個規範,他規範了flup這個服務應該怎麼寫,應該使用什麼方式什麼參數調用你寫的程式(application)等,當然同時也規範你的程式應該怎麼寫了,這樣的話,只要flup跟xdly都遵守WSGI的話,你的程式在兩個上面都可以使用了,flup就是一個WSGI server