day3

[if !supportLists]1?[endif]虛擬環(huán)境

[if !supportLists]1.1?[endif]安裝虛擬環(huán)境

使用Python進行項目開發(fā)時土思,由于不同的項目需要务热,可能會配置多個開發(fā)環(huán)境,不同開發(fā)環(huán)境之間的項目依賴包如果混合在一起己儒,可能會引起意想不到的錯誤崎岂。

通過虛擬環(huán)境隔離不同開發(fā)環(huán)境,方便不同開發(fā)環(huán)境的共存闪湾。

#安裝python虛擬環(huán)境

sudo apt install?-y?virtualenv

#vrtaulenvwrapper是virtualenv的擴展包冲甘,用于更方便管理虛擬環(huán)境

sudo apt install -y virtualenvwrapper

[if !supportLists]1.2?[endif]配置虛擬環(huán)境

此時還不能使用virtualenvwrapper,實際上你需要運行virtualenvwrapper.sh文件才行。

配置步驟如下:

1江醇、查看virtualenvwrapper的安裝路徑

sudo find / -name virtualenvwrapper.sh

2濒憋、創(chuàng)建目錄用來存放虛擬環(huán)境

mkdir ~/.myvirtualenvs

3、在~/.bashrc中添加行

export WORKON_HOME=/home/yong/.myvirtualenvs

source /usr/share/virtualenvwrapper/virtualenvwrapper.sh

4陶夜、運行: source ~/.bashrc

此時virtualenvwrapper就可以使用了凛驮。

[if !supportLists]1.3?[endif]virtualenvwrapper的功能

配置好virtualenvwrapper,就可以使用它的功能条辟,方便管理虛擬環(huán)境

workon: ????????列出虛擬環(huán)境列表

lsvirtualenv: 列出虛擬環(huán)境列表

mkvirtualenv: 新建虛擬環(huán)境

workon [虛擬環(huán)境名稱]: 切換/進入虛擬環(huán)境

rmvirtualenv : ????刪除虛擬環(huán)境

deactivate: 離開虛擬環(huán)境

[if !supportLists]1.4?[endif]創(chuàng)建虛擬環(huán)境

進入本地虛擬環(huán)境的目錄文件夾

cd ~/.myvirtualenvs/

創(chuàng)建虛擬環(huán)境 根據(jù)需要選擇3和2

mkvirtualenv -p /usr/bin/python3 ?py3

mkvirtualenv -p /usr/bin/python ?py2

進入虛擬環(huán)境

workon virtualenv-django

查看虛擬環(huán)境中已經(jīng)安裝的包

pip list

pip freeze

[if !supportLists]2?[endif]uwsgi

UWSGI是一個Web服務(wù)器黔夭,它實現(xiàn)了WSGI協(xié)議、uwsgi羽嫡、http等協(xié)議本姥。Nginx中HttpUwsgiModule的作用是與uWSGI服務(wù)器進行交換。

要注意WSGI / uwsgi / uWSGI這三個概念的區(qū)分厂僧。

[if !supportLists]??[endif]WSGI是一種通信協(xié)議扣草。

[if !supportLists]??[endif]uwsgi是一種線路協(xié)議而不是通信協(xié)議,在此常用于在uWSGI服務(wù)器與其他網(wǎng)絡(luò)服務(wù)器的數(shù)據(jù)通信颜屠。

[if !supportLists]??[endif]而uWSGI是實現(xiàn)了uwsgi和WSGI兩種協(xié)議的Web服務(wù)器辰妙。

uwsgi協(xié)議是一個uWSGI服務(wù)器自有的協(xié)議,它用于定義傳輸信息的類型(type of information)甫窟,每一個uwsgi packet前4byte為傳輸信息類型描述密浑,它與WSGI相比是兩樣?xùn)|西。

[if !supportLists]2.1?[endif]安裝

[if !supportLists]??[endif]安裝依賴

sudo apt-get -y install build-essential python3-dev python-pip curl

[if !supportLists]??[endif]pip命令安裝粗井,這里應(yīng)該在python3的虛擬環(huán)境里安裝

pip install uwsgi

[if !supportLists]??[endif]下載安裝腳本尔破,將uwsgi二進制安裝到家目錄下,你可以修改它浇衬。

sudo curl http://uwsgi.it/install | bash -s default /home/yong/uwsgi

sudo mv /home/yong/uwsgi /usr/local/sbin/

[if !supportLists]2.2?[endif]使用

[if !supportLists]??[endif]新建服務(wù)wsgi協(xié)議的邏輯代碼server.py

def application(environ, start_response):

????body = '<h1>Hello,World!</h1>'

????start_response('200 OK', [('Content-Type', 'text/html')])

return body.encode('utf-8')


environ:請求信息組成的字典

start_response:處理響應(yīng)

[if !supportLists]??[endif]運行

uwsgi --http :9090 --wsgi-file server.py

然后打開瀏覽器懒构,訪問”http://localhost:9090″,你就可以看到”Hello World!”字樣了耘擂。

上面的命令中”- -http”參數(shù)指定了HTTP監(jiān)聽地址和端口胆剧,”- -wsgi-file”參數(shù)指定了WSGI應(yīng)用程序入口,uWSGI會自動搜尋名為”application”的應(yīng)用對象并調(diào)用它醉冤。

更進一步秩霍,uWSGI可以支持多進程和多線程的方式啟動應(yīng)用,也可以監(jiān)控應(yīng)用的運行狀態(tài)蚁阳。我們將啟動的命令改為:

uwsgi --http :9090 --wsgi-file server.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

執(zhí)行它后铃绒,uWSGI將啟動4個應(yīng)用進程,每個進程有2個線程螺捐,和一個master主進程(監(jiān)控其他進程狀態(tài)颠悬,如果有進程死了矮燎,則重啟)。同時椿疗,你可以訪問”127.0.0.1:9191″來獲取JSON格式的應(yīng)用運行信息漏峰,uWSGI還提供了工具命令”uwsgitop”來像top一樣監(jiān)控應(yīng)用運行狀態(tài)糠悼,你可以用pip來安裝它届榄。


上面的命令參數(shù)太多了,我們可以將參數(shù)寫在配置文件里,啟動uWSGI時指定配置文件即可倔喂。配置文件可以是鍵值對的格式铝条,也可以是XML,YAML格式席噩,這里我們使用鍵值對的格式班缰。讓我們創(chuàng)建一個配置文件”myapp.ini”

[uwsgi]

http=:9090

wsgi-file=server.py

master=true

processes=4

threads=2

stats=127.0.0.1:9191

然后就可以將啟動命令簡化為:

uwsgi myapp.ini


使用uwsgi的時候需要進入python3的虛擬環(huán)境,默認是調(diào)用python2悼枢。

[if !supportLists]2.3?[endif]案例

完成電商里的商品管理模塊埠忘。


http://ip:port/show 查詢所有

http://ip:port/show/1 查詢id=1

?????"2

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市馒索,隨后出現(xiàn)的幾起案子莹妒,更是在濱河造成了極大的恐慌,老刑警劉巖绰上,帶你破解...
    沈念sama閱讀 217,277評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件旨怠,死亡現(xiàn)場離奇詭異,居然都是意外死亡蜈块,警方通過查閱死者的電腦和手機鉴腻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,689評論 3 393
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來百揭,“玉大人爽哎,你說我怎么就攤上這事∑饕唬” “怎么了课锌?”我有些...
    開封第一講書人閱讀 163,624評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長盹舞。 經(jīng)常有香客問我产镐,道長,這世上最難降的妖魔是什么踢步? 我笑而不...
    開封第一講書人閱讀 58,356評論 1 293
  • 正文 為了忘掉前任癣亚,我火速辦了婚禮,結(jié)果婚禮上获印,老公的妹妹穿的比我還像新娘述雾。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,402評論 6 392
  • 文/花漫 我一把揭開白布玻孟。 她就那樣靜靜地躺著唆缴,像睡著了一般。 火紅的嫁衣襯著肌膚如雪黍翎。 梳的紋絲不亂的頭發(fā)上面徽,一...
    開封第一講書人閱讀 51,292評論 1 301
  • 那天,我揣著相機與錄音匣掸,去河邊找鬼趟紊。 笑死,一個胖子當(dāng)著我的面吹牛碰酝,可吹牛的內(nèi)容都是我干的霎匈。 我是一名探鬼主播,決...
    沈念sama閱讀 40,135評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼送爸,長吁一口氣:“原來是場噩夢啊……” “哼铛嘱!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起袭厂,我...
    開封第一講書人閱讀 38,992評論 0 275
  • 序言:老撾萬榮一對情侶失蹤墨吓,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后嵌器,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肛真,經(jīng)...
    沈念sama閱讀 45,429評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,636評論 3 334
  • 正文 我和宋清朗相戀三年爽航,在試婚紗的時候發(fā)現(xiàn)自己被綠了蚓让。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,785評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡讥珍,死狀恐怖历极,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情衷佃,我是刑警寧澤趟卸,帶...
    沈念sama閱讀 35,492評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站氏义,受9級特大地震影響锄列,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜惯悠,卻給世界環(huán)境...
    茶點故事閱讀 41,092評論 3 328
  • 文/蒙蒙 一邻邮、第九天 我趴在偏房一處隱蔽的房頂上張望嗜桌。 院中可真熱鬧厉亏,春花似錦稚铣、人聲如沸伤极。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,723評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽川尖。三九已至隧魄,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間娶视,已是汗流浹背晒哄。 一陣腳步聲響...
    開封第一講書人閱讀 32,858評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留歇万,地道東北人揩晴。 一個月前我還...
    沈念sama閱讀 47,891評論 2 370
  • 正文 我出身青樓勋陪,卻偏偏與公主長得像贪磺,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子诅愚,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,713評論 2 354

推薦閱讀更多精彩內(nèi)容