python web法式的安排体例小结

2018.04.17 python web,潍坊网站建造

77

python web法式的安排体例小结


  python有良多web开辟框架,代码写完了,安排上线是个大事,凡是来讲,web利用普通是三层规划web server---->application----->DB server

 

  支流的web server一个巴掌就能够数出来,apache,lighttpd,nginx,iis

 

  application,中文名叫做利用办事,便是你基于某个web framework写的利用代码DB server泛指存储办事,web开辟顶用mysql比拟多,比来几年由于网站范围扩大,memcache,redis这类key-value等存储也风行开来

 

  放在最后面的web server有3个功效

 

  高效力处置静态文件,web server都是用c开辟,挪用是native的函数,对IO,文件传输都做针对性的优化

 

  充任一个简略单纯的收集防火墙,能够denny一些ip,简略的节制并发毗连数目等等,聊胜于无

 

  处置高并发短毗连要求,把不计其数用户的request经由过程内网的几十个长毗连停止转发,缘由一个是web server处置高并发很专业,别的一个缘由是大局部的application所用的框架都不具有处置高并发的才能

 

  实际上,市道上有局部web framework由于内置了撑持epoll/kqueue等高效收集库,而具有了处置高并发的才能,比方说python的tornado,java系的tomcat,jetty等等,有人就去掉前真个web server,间接裸奔,可是在安排公网利用时辰,最好别如许做,由于后面提到的1,2两个缘由,用户brower到web server的收集状态是光怪陆离,你没法设想的。


潍坊网站建造,python


 

  web server激烈倡议利用nginx,缘由有三

 

  机能很是出色,很是不变

 

  装置简略,依靠包少

 

  conf文件很是轻易设置装备摆设,比apache/lighttpd都要简略

 

  安排python开辟的web法式有9种体例

 

  mod_python,这是apache内置的模块,很严峻的依靠于mod_python编译利用的python版本,和apache配套利用,不保举

 

  cgi,这个太old,不保举,并且nginx不撑持cgi体例,只能用lighttpd或apache

 

  fastcgi,这个是今朝风行最广的做法,经由过程flup模块来撑持的,在nginx里对应的设置装备摆设指令是fastcgi_pass

 

  spawn-fcgi,这个是fastcgi多历程办理法式,lighttpd装置包附带的,和flup成果一样,区分是flup是python代码级引入,spawn-fcgi是内部法式。spawn-fcgi用处很广,能够撑持肆意说话开辟的代码,php,python,perl,只需你代码完成了fastcgi接口,它都能够帮你办理你的历程

 

  scgi,全名是Simple Common Gateway Interface,也是cgi的替换版本,scgi和谈很简略,我感觉和fastcgi差未几,只是不怎样推行开来,nginx对应的设置装备摆设指令是scgi_pass,你想用就用,flup也撑持。

 

  http,nginx利用proxy_pass转发,这个要求后端appplication必须内置一个能处置高并发的http server,在python的web框架傍边,只能挑选tornado.

 

  python法式员喜好发现轮子,tornado除是一个web framework以外,它还能够零丁供给高机能http server,以是,若是你接纳其余python框架写代码,比方说bottle,也一样能够经由过程import tornado来启动一个高机能的http server,一样的能够接纳http和谈和nginx一路来安排。扩大开来,python包外面能处置高并发的http server另有良多,比方说gevent,也能够被其余框架援用来撑持http体例安排。



潍坊网站建造,python

 

  实际傍边,用java来做web法式,凡是就用http和nginx共同,利用办事器挑选tomcat或jetty

 

  uwsgi,包含4局部构成,

 

  uwsgi和谈

 

  web server内置撑持和谈模块

 

  application办事器和谈撑持模块

 

  历程节制法式

 

  nginx从0.8.4起头内置撑持uwsgi和谈,uwsgi和谈很是简略,一个4个字节header+一个body,body能够是良多和谈的包,比方说http,cgi等(经由过程header外面字段标示),我曾做个一个小范围的机能对照测试,成果标明,uwsgi和fastcgi比拟,机能不太较着的上风,也能够是数据集较小的缘由

 

  uwsgi的特色在于自带的历程节制法式.它是用c说话编写,利用natvie函数,实在和spawn-fcgi/php-fpm近似。以是uwsgi能够撑持多种利用框架,包含(python,lua,ruby,erlang,go)等等

 

  Gunicorn,和uwsgi近似的东西,从rails的安排东西(Unicorn)移植过去的。可是它利用的和谈是WSGI,全称是Python Web Server Gateway Interface,这是python2.5时界说的官方规范(PEP 333),根红苗正,并且安排比拟简略。

 

  mod_wsgi,apache的一个module,也是撑持WSGI和谈,


潍坊网站建造,python


 

  fastcgi和谈和http和谈在代码安排中的的好坏对照

 

  fastcgi固然是二进制和谈,绝对http和谈,并不节流资本。二进制和谈,只能节流数字的抒发,比方1234567,用字符串表现须要7个Byte,用数字便是4个Byte,而字符串到那里都一样

 

  fastcgi在传输数据的时辰,为了兼容cgi和谈,还要带上一堆cgi的环境变量,以是和http和谈比拟,用fastcgi传输数据并不省,反而多一些

 

  fastcgi独一的长处是,它是长毗连的,用户并发1000个request,fastcgi能够就用10个链接转发给后真个appplication,若是用http和谈,那来几多给几多,会向后端appplication倡议1000个要求

 

  http代办署理转发体例,在面临超高并发的环境下会出题目,由于,tcp和谈栈傍边,port是int16整型你本地新建一个connect,须要耗损一个端口,最多能到65536。内部并发几十万个要求,port池耗干,你的办事器只能谢绝呼应了

 

  转载请说明:潍坊网站建造:http://h-waiyucheng.com/newsshow/218.html


关头词

最新案例

接洽德律风 400-6065-301

留言