亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

淺談Python項(xiàng)目的服務(wù)器部署

瀏覽:10日期:2022-06-21 11:15:14
關(guān)于Web服務(wù)器和應(yīng)用服務(wù)器

基本概念:

Web服務(wù)器主要功能就是存儲(chǔ)、處理、傳遞網(wǎng)頁(yè),客戶端和服務(wù)器之間基于HTTP協(xié)議進(jìn)行通信。 應(yīng)用服務(wù)器主要是處理動(dòng)態(tài)請(qǐng)求,調(diào)用相應(yīng)的對(duì)象完成對(duì)請(qǐng)求的處理,返回響應(yīng)的結(jié)果。

兩者之間的區(qū)別:

Web服務(wù)器主要是以HTTP為核心,WEB UI為向?qū)У膽?yīng)用,處理一些靜態(tài)請(qǐng)求。 應(yīng)用服務(wù)器雖然也支持HTTP協(xié)議,但應(yīng)用服務(wù)器可以通過(guò)很多協(xié)議為應(yīng)用程序提供商業(yè)邏輯。Python項(xiàng)目部署架構(gòu)

在我們平時(shí)搭建一個(gè)Python Web項(xiàng)目時(shí),比如Django框架的項(xiàng)目,這時(shí)候常見(jiàn)的服務(wù)端架構(gòu):

Nginx服務(wù)器作為代理服務(wù)器,代理處理靜態(tài)資源(js,css,圖片)請(qǐng)求,以及動(dòng)態(tài)請(qǐng)求(增刪改查)轉(zhuǎn)發(fā)以及返回處理結(jié)果。 uWSGI服務(wù)器負(fù)責(zé)接受Nginx服務(wù)器,處理過(guò)后轉(zhuǎn)發(fā)給Django應(yīng)用,接受Django應(yīng)用處理返回的信息,在轉(zhuǎn)發(fā)給nginx Django應(yīng)用從uWSGI服務(wù)器接收請(qǐng)求,調(diào)用相應(yīng)的業(yè)務(wù)邏輯,處理數(shù)據(jù)渲染相應(yīng)的頁(yè)面并且返回給uWSGI服務(wù)器。關(guān)于cgi、wsgi、uwsgi、http協(xié)議

接下來(lái)針對(duì)上文提到Django項(xiàng)目部署架構(gòu),聊聊這幾個(gè)協(xié)議在這過(guò)程中的作用:

http協(xié)議:客戶端程序和Nginx服務(wù)器通信就是基于http協(xié)議,而Nginx服務(wù)器作為一個(gè)代理服務(wù)器,會(huì)根據(jù)HTTP請(qǐng)求返回靜態(tài)資源還是轉(zhuǎn)發(fā)動(dòng)態(tài)請(qǐng)求。 cgi協(xié)議:cgi協(xié)議是外部應(yīng)用程序和Web服務(wù)器之間的接口標(biāo)準(zhǔn),簡(jiǎn)而言之,就是規(guī)定如何讓一個(gè)程序與Web服務(wù)器程序之間通信。 wsgi協(xié)議:基于現(xiàn)存的CGI標(biāo)準(zhǔn)設(shè)計(jì),一個(gè)Python web框架編寫的應(yīng)用程序和Web服務(wù)器之間通信的規(guī)范。 uwsgi:uWSGI服務(wù)器獨(dú)有的協(xié)議,用于uWSGI服務(wù)器和其他Web服務(wù)器之間的數(shù)據(jù)通信 關(guān)于cgi、fastcgi、php-fpm、FastCGI(額外) CGI:是 Web Server 與 Web Application 之間數(shù)據(jù)交換的一種協(xié)議。 FastCGI:同 CGI,是一種通信協(xié)議,但比 CGI 在效率上做了一些優(yōu)化。同樣,SCGI 協(xié)議與 FastCGI 類似。 PHP-CGI:是 PHP (Web Application)對(duì) Web Server 提供的 CGI 協(xié)議的接口程序。 PHP-FPM:是 PHP(Web Application)對(duì) Web Server 提供的 FastCGI 協(xié)議的接口程序,額外還提供了相對(duì)智能一些任務(wù)管理。 關(guān)于uWSGI、Nginx服務(wù)器

簡(jiǎn)單來(lái)講,uWSGI也是一個(gè)Web服務(wù)器,他雖然同時(shí)實(shí)現(xiàn)了http、uwsgi、wsgi協(xié)議,但是更多被作為應(yīng)用服務(wù)器和應(yīng)用程序之間進(jìn)行通信。那么這里就有個(gè)疑問(wèn)了,為什么uWSGI都能直接處理http請(qǐng)求了,還需要Nginx服務(wù)器?這樣處理有幾點(diǎn)原因:

首先Nginx服務(wù)器在這過(guò)程中屬于代理服務(wù)器的角色,每當(dāng)一個(gè)http請(qǐng)求進(jìn)來(lái),就需要經(jīng)過(guò)Nginx服務(wù)器,而Nginx服務(wù)器的優(yōu)勢(shì)就在于異步非阻塞的網(wǎng)絡(luò)模型,它能夠在單線程的情況下處理大量的請(qǐng)求,針對(duì)處理靜態(tài)資源請(qǐng)求;而對(duì)于動(dòng)態(tài)請(qǐng)求,能夠通過(guò)緩存的功能,并且配合CDN進(jìn)行優(yōu)化,這樣能夠極大降低系統(tǒng)的負(fù)載,降低客戶端響應(yīng)時(shí)間。 其次,Nginx服務(wù)器能夠進(jìn)行負(fù)載均衡,啟用多個(gè)后端服務(wù)器,通過(guò)Nginx對(duì)HTTP請(qǐng)求進(jìn)行分配,這樣能夠極大優(yōu)化架構(gòu)的效率,提高處理的性能。 最后,Nginx有很多模塊支持一些比如白名單,黑名單功能,并且配合keepalive實(shí)現(xiàn)高可用的架構(gòu).

總而言之,Nginx服務(wù)器在處理http請(qǐng)求上,都有著uWSGI沒(méi)有的優(yōu)勢(shì),所以在日常部署環(huán)境中,經(jīng)常會(huì)使用到Nginx+uWSGI。

uWSGI安裝部署

uWSGI有兩種安裝方式,一種是通過(guò)pip安裝,一種是通過(guò)源碼安裝。這里就簡(jiǎn)單介紹pip安裝方式,源碼安裝有興趣可以私下自己了解。

pip install uwsgi相關(guān)文件

uWSGI服務(wù)器在啟動(dòng)的過(guò)程中主要涉及到以下這幾個(gè)文件,其中uwsgi.sock還會(huì)涉及到Nginx相關(guān)部署的問(wèn)題,在Nginx配置的時(shí)候回繼續(xù)展開(kāi)講。

(venv) [root@mbb-48 uwsgi]# tree ..|-- uwsgi.ini # uwsgi配置文件|-- uwsgi.log # uwsgi日志文件|-- uwsgi.pid # uwsgi運(yùn)行進(jìn)程pid|-- uwsgi.sock # uwsgi socket`-- uwsgi.status # uwsgi狀態(tài)文件配置示例

以下配置是自己一個(gè)項(xiàng)目中用到的,其中的配置參數(shù)都是比較常見(jiàn)通用。

[uwsgi]chdir=/data/Novel/novel_testmodule=novel_test.wsgi:applicationhome=/data/Novel/venvstatic-map=/static=/data/Novel/novel_test/staticthreads=8http=0.0.0.0:23606master=truevacuum=truethunder-lock=trueuid=rootgid=rootharakiri=30post-buffering=4096socket=%(chdir)/uwsgi/uwsgi.sockstats=%(chdir)/uwsgi/uwsgi.statuspidfile=%(chdir)/uwsgi/uwsgi.piddaemonize=%(chdir)/uwsgi/uwsgi.log

配置解析

chdir: 定義項(xiàng)目的目錄 module: 要使用的 WSGI 模塊,不同的Python web框架中使用方式也不太一樣。 home: 指定Python執(zhí)行環(huán)境,這個(gè)參數(shù)針對(duì)有不同Python運(yùn)行環(huán)境,比如virtualenv創(chuàng)建獨(dú)立Python環(huán)境的情況。 static-map: 映射靜態(tài)目錄 threads: 線程數(shù)量 http: 指定啟動(dòng)地址和端口 master: 啟用主進(jìn)程 vacuum: 退出時(shí),清理產(chǎn)生的中間文件(sock,pid,stats) thunder-lock: 序列化接收的內(nèi)容 uid: 指定啟動(dòng)用戶 gid: 指定啟動(dòng)組 harakiri: 設(shè)置服務(wù)器響應(yīng)時(shí)間 post-buffering: 啟用緩沖 socket: socket文件存放路徑 stats: stats文件存放路徑 pidfile: pid文件存放路徑 daemonize: 日志文件輸出文件路徑

額外配置

processes: 進(jìn)程數(shù)量 buffer-size: 設(shè)置緩沖大小 listen: 設(shè)置監(jiān)聽(tīng)隊(duì)列大小(默認(rèn)100) max-requests: 每個(gè)工作進(jìn)程請(qǐng)求書的最高上限 procname-prefix-spaced: 工作進(jìn)程的前綴名 wsgi-file: 指定加載WSGI文件 常用命令

上面介紹了相關(guān)常用的配置參數(shù),當(dāng)設(shè)置uWSGI參數(shù)后,需要啟動(dòng)指定配置文件,以及有關(guān)暫停,重啟的動(dòng)作。

uwsgi --ini uwsgi.ini # 啟動(dòng)uWSGIuwsgi --stop uwsgi.pid # 暫停uWSGIuwsgi --reload uwsgi.pid # 重啟uWSGI服務(wù)監(jiān)控

uWSGI之一Stats服務(wù)器機(jī)制,它能將uWSGI狀態(tài)作為一個(gè)JSON對(duì)象導(dǎo)出一個(gè)socket中,只需要像我們前面配置uWSGI配置文件一樣,添加stats選項(xiàng),跟著一個(gè)有效的socket地址接口。

當(dāng)你配置完畢后,就可以通過(guò)客戶端連接到指定的socket地址,將會(huì)獲得一個(gè)包含uWSGI內(nèi)部統(tǒng)計(jì)數(shù)據(jù)的JSON對(duì)象。

uwsgi --connect-and-read uwsgi.status

執(zhí)行完這個(gè)命令后,讀取的返回的結(jié)果是一個(gè)json字符串,字符串中包括每個(gè)線程的狀態(tài),整個(gè)應(yīng)用的負(fù)載,版本,監(jiān)聽(tīng)隊(duì)列等詳細(xì)的信息。

uwsgitop查看實(shí)時(shí)狀態(tài)uwsgitop是一個(gè)開(kāi)源的實(shí)時(shí)監(jiān)控uWSGI服務(wù)器狀態(tài)的工具,安裝也十分簡(jiǎn)單:

pip install uwsgitop

具體uwsgitop像一個(gè)top命令,監(jiān)聽(tīng)?wèi)?yīng)用程序并且使用socket地址進(jìn)行調(diào)用,查看進(jìn)程運(yùn)行狀態(tài),運(yùn)行詳細(xì)信息:

uwsgitop uwsgi/uwsgi.statusuwsgi-2.0.19.1 - Sun Sep 20 15:58:48 2020 - req: 6 - RPS: 0 - lq: 0 - tx: 67.6Knode: mbb-48 - cwd: /data/Novel/novel_test - uid: 0 - gid: 0 - masterpid: 15109 WID % PID REQ RPS EXC SIG STATUS AVG RSS VSZ TX ReSpwn HC RunT LastSpwn 1100.0 15144 6000idle 15ms 0067.6K 10125.449 15:48:08 :2 16.7 -10--idle ----- :3 16.7 -10--idle ----- :0 33.3 -20--idle ----- :1 33.3 -20--idle -----

具體有興趣的同學(xué)可以參考github地址:

https://github.com/xrmx/uwsgitop

總結(jié)

關(guān)于uWSGI服務(wù)器相關(guān)使用就總結(jié)到這里,因?yàn)樵谄綍r(shí)工作中會(huì)經(jīng)常接觸到,但是由于沒(méi)有應(yīng)用到一些高并發(fā)的場(chǎng)景,對(duì)于uwsgi調(diào)優(yōu)方面沒(méi)有多少經(jīng)驗(yàn),等待以后遇到此類問(wèn)題再繼續(xù)總結(jié)性能調(diào)優(yōu)方面的問(wèn)題。同時(shí)有關(guān)Nginx方面的配置留到下一篇文章繼續(xù)講,未完待續(xù)。。。。。

以上就是淺談Python項(xiàng)目的服務(wù)器部署的詳細(xì)內(nèi)容,更多關(guān)于python 服務(wù)器部署的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 台湾一级特黄精品大片 | 国产成人综合久久亚洲精品 | 久草手机视频在线观看 | 草草久久97超级碰碰碰免费 | 日韩精品a在线视频 | 日本在线观看一级高清片 | 亚洲综合国产一区二区三区 | 日韩高清在线二区 | 久久国产精品最新一区 | 加勒比久久综合 | 日韩欧美一及在线播放 | 三级网站视频 | 国产在线观看一区二区三区四区 | 国产精品视频永久免费播放 | 亚洲高清国产一区二区三区 | 在线成人97观看 | 精品精品国产自在久久高清 | 8888奇米四色在线 | 一本久道综合久久精品 | 欧美精品片在线观看网站 | 一区二区三区在线 | 午夜宅男在线永久免费观看网 | 久久精品亚洲一区二区 | 黄大片日本一级在线a | 久揄揄鲁一二三四区高清在线 | 高清在线一区二区三区亚洲综合 | 在线观看免费黄色网址 | 俄罗斯美女毛片 | 国产午夜精品理论片影院 | 美女视频免费黄色 | 久久99久久精品免费思思6 | 欧美精品综合一区二区三区 | 韩国在线精品福利视频在线观看 | 碰碰碰精品视频在线观看 | 99在线观看视频免费精品9 | 国产欧美日韩三级 | 9191精品国产免费不久久 | 亚洲最新视频在线观看 | 新版天堂中文资源官网 | 国产网站免费视频 | 免费视频毛片 |