欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python Web編程之WSGI協(xié)議簡(jiǎn)介

 更新時(shí)間:2018年07月18日 10:38:01   作者:噴跑的豆子  
這篇文章主要介紹了Python Web編程之WSGI協(xié)議,簡(jiǎn)單說(shuō)明了WSGI的概念、功能并結(jié)合實(shí)例形式分析了Gunicorn和uWSGI相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下

本文實(shí)例講述了Python Web編程之WSGI協(xié)議。分享給大家供大家參考,具體如下:

WSGI簡(jiǎn)介

Web框架和Wen服務(wù)器之間需要進(jìn)行通信,如果在設(shè)計(jì)時(shí)它們之間無(wú)法相互匹配,那么對(duì)框架的選擇就會(huì)限制對(duì)Web服務(wù)器的選擇,這顯然是不合理的。這時(shí)候需要設(shè)計(jì)一套雙方都遵守的接口。WSGI是Python Web Server Gateway Interface的簡(jiǎn)稱(chēng)。WSGI標(biāo)準(zhǔn)在PEP 333中定義并被許多框架實(shí)現(xiàn),它規(guī)定了一種在Web服務(wù)器之間具有可移植性。在后來(lái)的PEP 3333中添加了Python 3的支持和更多相關(guān)的說(shuō)明。有了通用的WSGI協(xié)議,Web開(kāi)發(fā)者就能夠任意選擇適合自己的組合,而Web服務(wù)器和Web框架的開(kāi)發(fā)者們也能夠把精力集中到各自的領(lǐng)域。

常見(jiàn)的WSGI容器

WSGI是一個(gè)同步接口,所以Tornado的WSGI容器是無(wú)法實(shí)現(xiàn)異步的。主流的選擇是GunicornuWSGI。

Gunicorn

Gunicorn易于配置,兼容性好,CPU消耗很少,在豆瓣使用廣泛。它支持多種Worker模式,推薦的模式有如如下幾種:

  • 同步Worker:默認(rèn)模式,也就是一次只處理一個(gè)請(qǐng)求
  • 異步Worker:通過(guò)Eventlet、Gevent實(shí)現(xiàn)的異步模式
  • 異步IO Worker:目前支持gthread和gaiohttp兩種類(lèi)型

安裝Gunicorn:

pip install gunicorn

Gunicorn的啟動(dòng)非常簡(jiǎn)單,語(yǔ)法如下:

gunicorn [OPTIONS] MODULE_NAME:VARIABLE_NAME

舉個(gè)栗子,manager.py:

from flask import Flask
app = Flask(__name__)
@app.route("/")
def hello_world():
  return "Hello World"
if __name__ == "__main__":
  app.run()

啟動(dòng)應(yīng)用:

gunicorn manager:app -b 0.0.0.0:9000

亦或者指定Worker數(shù)量啟動(dòng):

gunicorn --workers=3 manager:app -b 0.0.0.0:9000

app為Flask實(shí)例的名稱(chēng),Worker的數(shù)量推薦值是CPU的個(gè)數(shù)*2+1,CPU個(gè)數(shù)使用如下的方式獲取:

python -c 'import multiprocessing; print multiprocessing.cpu_count()'

uWSGI

uWSGI是使用C編寫(xiě)的,顯示了自有的uwsgi協(xié)議的Web服務(wù)器。它自帶豐富的組件,其中核心組件包含進(jìn)程管理、監(jiān)控、IPC等功能,實(shí)現(xiàn)應(yīng)用服務(wù)器接口的請(qǐng)求插件支持多種語(yǔ)言和平臺(tái),比如WSGI、Rack、Lua WSAPI,網(wǎng)管組件實(shí)現(xiàn)了負(fù)載均衡、代理和理由功能。

安裝uWSGI

pip install uwsgi

使用uWSGI啟動(dòng)應(yīng)用:

復(fù)制代碼 代碼如下:
uwsgi --http 0.0.0.0:9000 --wsgi-file manager.py --callable app --processes 4 --threads 2 --stats 0.0.0.0:5000

上面的命令表示啟動(dòng)了4個(gè)進(jìn)程,每個(gè)進(jìn)程使用2個(gè)線程,而且開(kāi)啟了5000的Web接口,返回監(jiān)控uWSGI的信息,一級(jí)不同進(jìn)程和線程的詳細(xì)使用情況。使用uWSGI有兩點(diǎn)十分重要:

–http-socket–http其實(shí)是完全不同的兩個(gè)選項(xiàng)。如果想直接裸跑uWSGI,應(yīng)該使用–http,它產(chǎn)生一個(gè)額外的進(jìn)程將請(qǐng)求轉(zhuǎn)發(fā)給Workers,如果希望它被反向代理(比如和Nginx一起使用),應(yīng)該使用–http-socket。

合理的進(jìn)程數(shù)和線程數(shù)不能簡(jiǎn)單的通過(guò)CPU * 2來(lái)計(jì)算得出,需要不斷的嘗試而找到最佳值。

uWSGI命令常用參數(shù)如下:

參數(shù)名 含義
–http 協(xié)議類(lèi)型和端口號(hào)
–processes 開(kāi)啟的進(jìn)程數(shù)量
–callable uWSGI加載的模塊哪個(gè)變量將被調(diào)用
–workers 開(kāi)啟的進(jìn)行數(shù)量,等同于processes
–chdir 指定運(yùn)行目錄
–wsgi-file 載入wsgi-file(加載wsgi.py文件)
–stats 在指定的地址上開(kāi)啟狀態(tài)服務(wù)
–threads 開(kāi)啟的線程數(shù)量
–master 允許主進(jìn)程存在
–daemonize 使進(jìn)程在后臺(tái)運(yùn)行,并將日志輸出到指定的日志文件或者UDP服務(wù)器
–pidfile 指定PID文件的位置,記錄主進(jìn)程的PID號(hào)
–vacuum 當(dāng)服務(wù)器退出時(shí)自動(dòng)清理環(huán)境,刪除Unix Socket文件和PID文件

更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專(zhuān)題:《Python Socket編程技巧總結(jié)》、《Python URL操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》及《Python入門(mén)與進(jìn)階經(jīng)典教程

希望本文所述對(duì)大家Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • 如何使用python傳入不確定個(gè)數(shù)參數(shù)

    如何使用python傳入不確定個(gè)數(shù)參數(shù)

    這篇文章主要介紹了如何使用python傳入不確定個(gè)數(shù)參數(shù),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Python3爬蟲(chóng)中關(guān)于中文分詞的詳解

    Python3爬蟲(chóng)中關(guān)于中文分詞的詳解

    在本篇文章里小編給大家整理的是關(guān)于Python3爬蟲(chóng)中關(guān)于中文分詞的詳解內(nèi)容,需要的朋友們可以參考下。
    2020-07-07
  • 使用Docker制作Python環(huán)境連接Oracle鏡像

    使用Docker制作Python環(huán)境連接Oracle鏡像

    這篇文章主要為大家介紹了使用Docker制作Python環(huán)境連接Oracle鏡像示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • 利用Python和OpenCV庫(kù)將URL轉(zhuǎn)換為OpenCV格式的方法

    利用Python和OpenCV庫(kù)將URL轉(zhuǎn)換為OpenCV格式的方法

    這篇文章主要介紹了利用Python和OpenCV庫(kù)將URL轉(zhuǎn)換為OpenCV格式的方法,同時(shí)用到了NumPy和urllib,需要的朋友可以參考下
    2015-03-03
  • python多線程性能測(cè)試之快速mock數(shù)據(jù)

    python多線程性能測(cè)試之快速mock數(shù)據(jù)

    這篇文章主要為大家介紹了python多線程性能測(cè)試之快速mock數(shù)據(jù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-06-06
  • PyTorch中torch.tensor與torch.Tensor的區(qū)別詳解

    PyTorch中torch.tensor與torch.Tensor的區(qū)別詳解

    這篇文章主要介紹了PyTorch中torch.tensor與torch.Tensor的區(qū)別詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • conda換源安裝torch+vscode分布式訓(xùn)練調(diào)試的實(shí)現(xiàn)

    conda換源安裝torch+vscode分布式訓(xùn)練調(diào)試的實(shí)現(xiàn)

    本文主要介紹了conda換源安裝torch+vscode分布式訓(xùn)練調(diào)試的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-06-06
  • Python如何提取html中文本到txt

    Python如何提取html中文本到txt

    這篇文章主要介紹了Python如何提取html中文本到txt問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • Python OpenCV學(xué)習(xí)之特征點(diǎn)檢測(cè)與匹配詳解

    Python OpenCV學(xué)習(xí)之特征點(diǎn)檢測(cè)與匹配詳解

    提取圖像的特征點(diǎn)是圖像領(lǐng)域中的關(guān)鍵任務(wù),不管在傳統(tǒng)還是在深度學(xué)習(xí)的領(lǐng)域中,特征代表著圖像的信息,對(duì)于分類(lèi)、檢測(cè)任務(wù)都是至關(guān)重要的。這篇文章主要為大家詳細(xì)介紹了OpenCV特征點(diǎn)檢測(cè)與匹配,需要的可以參考一下
    2022-01-01
  • 深入了解Python中Requests庫(kù)的使用

    深入了解Python中Requests庫(kù)的使用

    Requests是一個(gè)功能強(qiáng)大的Python?HTTP庫(kù),用于發(fā)送HTTP請(qǐng)求,獲取響應(yīng)數(shù)據(jù),本文主要來(lái)和大家聊聊它的用法,需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-07-07

最新評(píng)論