




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Gunicorn初探初探Robby Zhou WSGIl WSGI,全稱 Web Server Gateway Interface,或者 Python Web Server Gateway Interface ,是為 Python 語言定義的 Web 服務(wù)器和 Web 應(yīng)用程序或框架之間的一種簡單而通用的接口。l WSGI 是作為 Web 服務(wù)器與 Web 應(yīng)用程序或應(yīng)用框架之間的一種低級別的接口,以提升可移植 Web 應(yīng)用開發(fā)的共同點(diǎn)。WSGI 是基于現(xiàn)存的 CGI 標(biāo)準(zhǔn)而設(shè)計的。l 很多框架都自帶了 WSGI server ,比如 Flask,webpy,Django、CherryPy等等
2、。當(dāng)然性能都不好,自帶的 web server 更多的是測試用途,發(fā)布時則使用生產(chǎn)環(huán)境的 WSGI server或者是聯(lián)合 nginx 做 uwsgi 。 WSGI的作用的作用l WSGI有兩方:“服務(wù)器”或“網(wǎng)關(guān)”一方,以及“應(yīng)用程序”或“應(yīng)用框架”一方。服務(wù)方調(diào)用應(yīng)用方,提供環(huán)境信息,以及一個回調(diào)函數(shù)(提供給應(yīng)用程序用來將消息頭傳遞給服務(wù)器方),并接收Web內(nèi)容作為返回值。l 所謂的 WSGI中間件同時實現(xiàn)了API的兩方,因此可以在WSGI服務(wù)和WSGI應(yīng)用之間起調(diào)解作用:從WSGI服務(wù)器的角度來說,中間件扮演應(yīng)用程序,而從應(yīng)用程序的角度來說,中間件扮演服務(wù)器。 Whats Gunicor
3、nlGunicorn()是一個 Python WSGI UNIX 的 HTTP 服務(wù)器, 是基于”pre-fork worker”模型,從 Ruby 的獨(dú)角獸(Unicorn)項目移植。l Gunicorn 服務(wù)器與各種 Web 框架兼容,只需非常簡單的執(zhí)行,輕量級的資源消耗,以及相當(dāng)迅速。 Gunicorn的特點(diǎn)的特點(diǎn)l 支持 Django,paster,wsgi程序l 非常容易配置(相比較而言)l 自動管理多個worker進(jìn)程l 可以采用不同的后臺擴(kuò)展接口(sync, gevent, tornado等)l 原生并發(fā)訪問性能不高,與 uWSGI, Bjoern等有一定
4、的性能差距l(xiāng) HA的方案還不夠完善 Gunicorn的設(shè)計的設(shè)計l Gunicorn是基于”pre-fork worker”模型,這就意味著有一個中心主控master進(jìn)程,由它來管理一組worker進(jìn)程l Worker進(jìn)程可以支持不同的IO方式(sync, gevent, eventlet, tornado, meinheld 等) Gunicorn的的源碼結(jié)構(gòu)l 從 Application.run() 開始,首先初始化配置,從文件讀取,終端讀取等等方式完成 configurate。然后啟動 Arbiter,Arbiter 是實質(zhì)上的 master 進(jìn)程的核心,它首先從配置類中讀取并設(shè)置,然后
5、初始化信號處理函數(shù),建立 socket。然后就是開始 spawn 工作進(jìn)程,根據(jù)配置的工作進(jìn)程數(shù)進(jìn)行 spawn。然后就進(jìn)入了輪詢狀態(tài),收到信號,處理信號然后繼續(xù)。這里喚醒進(jìn)程的方式是建立一個 PIPE,通過信號處理函數(shù)往 pipe 里 write,然后 master 從 select.select() 中喚醒。l 工作進(jìn)程在 spawn 后,開始初始化,然后同樣對信號進(jìn)行處理,并且開始輪詢,處理 HTTP 請求,調(diào)用 WSGI 的應(yīng)用端,得到 resopnse 返回。然后繼續(xù)。 Geventl Gevent是一種基于協(xié)程的Python網(wǎng)絡(luò)庫,它用到Greenlet提供的協(xié) 程,封裝了libe
6、vent事件循環(huán)的高層同步APIl Gevent實現(xiàn)了WSGI,可以很方便的當(dāng)作python的web server服務(wù) 器使用 Gevent的優(yōu)點(diǎn)的優(yōu)點(diǎn)l Gevent最明顯的特征就是它驚人的性能,尤其是當(dāng)與傳統(tǒng)線程解決方案對比的時候。在這一點(diǎn)上,當(dāng)負(fù)載超過一定程度的時候,異步I/O的性能會大大的優(yōu)于基于獨(dú)立線程的同步I/O這幾乎是常識了。l Gevent提供了看上去非常像傳統(tǒng)的基于線程模型編程的接口,但是在隱藏在下面做的是異步I/O。更妙的是,它使得這一切透明。你可以繼續(xù)使用這些普通的Python模塊,比如用urllib2去處理HTTP請求,它會用Gevent替換那些普通的阻塞的Socket
7、操作。 Gevent的性能的性能 Gevent的不足之處的不足之處l Gevent不能支持多進(jìn)程。這意味著如果你要完全用到多核,你需要在多個端口上運(yùn)行多個監(jiān)聽進(jìn)程。可能需要運(yùn)行類似于Nginx的東西去在這些服務(wù)監(jiān)聽進(jìn)程中分發(fā)請求。l 國內(nèi)使用得比較少,相關(guān)資料比較匱乏。 Meinheldl Meinheld 是一個高性能的兼容WSGI的web服務(wù)器,其有效利用了 greenlet和picoev的優(yōu)勢,能夠以一種輕量級的方式支持異步網(wǎng)絡(luò)IO Meinheld的特點(diǎn)的特點(diǎn)l 并發(fā)性能好,基本可以接近nginxl 能夠很好地支持gunicornl HTTP協(xié)議的完善支持l 相關(guān)資料比較少,國內(nèi)外成熟使用案例較少 幾種流行的幾種流行的Web Server壓力測試對比壓力測試對比l hello world輸出l ab c 100 n 100000 Gunicorn的幾種的幾種worker模式性能模式性能l sync 同步IO,性能較差l
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生物醫(yī)藥市場營測試卷
- 2025中考英語書面表達(dá)之話題作文專項復(fù)習(xí)課件
- 電動汽車設(shè)計與制造-課件 第2章 前期階段
- 辦公室裝修招標(biāo)文件范本
- 小清新績效管理答辯
- 音樂與文化的結(jié)合國際舞臺上的吸引力
- 革新傳統(tǒng)打造現(xiàn)代醫(yī)療建筑的特色
- 顧客體驗與忠誠度建設(shè)在新零售戰(zhàn)略中的地位
- 顧客畫像構(gòu)建在辦公用品電商中的應(yīng)用
- 顧客體驗為導(dǎo)向的新零售門店空間設(shè)計
- 巖土錨桿技術(shù)規(guī)程課件
- 風(fēng)寒感冒及風(fēng)熱感冒診斷及合理用藥課件
- 第五版PFMEA編制作業(yè)指導(dǎo)書
- 文獻(xiàn)整理表格
- VDA6.3過程審核檢查表(中英文版)
- DBJ∕T 13-261-2017 福建省二次供水不銹鋼水池(箱)應(yīng)用技術(shù)規(guī)程
- 二手車評估作業(yè)表簡單實際樣本
- 物資出入庫單模板
- 05示例:玉米脫粒機(jī)的設(shè)計(含全套CAD圖紙)
- 北師大版小學(xué)數(shù)學(xué)五年級下冊單元測試題含答案(全冊)
- 護(hù)理技術(shù)—鼻飼法課件
評論
0/150
提交評論