php发展

首页 » 常识 » 诊断 » PythonWeb部署方式总结
TUhjnbcbe - 2021/2/14 17:52:00
北京哪家医院治疗白癜风更好         http://wapyyk.39.net/bj/zhuanke/89ac7.html

(点击上方蓝字,快速
  FastCGI是一个可伸缩地、高速地在HTTPserver和动态脚本语言间通信的接口。多数流行的HTTPserver都支持FastCGI,包括Apache、Nginx和lig
  PythonWeb服务器网关接口(PythonWebServerGatewayInterface,缩写为WSGI)是为Python语言定义的Web服务器和Web应用程序或框架之间的一种简单而通用的接口。自从WSGI被开发出来以后,许多其它语言中也出现了类似接口。WSGI是作为Web服务器与Web应用程序或应用框架之间的一种低级别的接口,以提升可移植Web应用开发的共同点。WSGI是基于现存的CGI标准而设计的。

WSGI区分为两个部份:一为“服务器”或“网关”,另一为“应用程序”或“应用框架”。在处理一个WSGI请求时,服务器会为应用程序提供环境上下文及一个回调函数(CallbackFunction)。当应用程序完成处理请求后,透过先前的回调函数,将结果回传给服务器。所谓的WSGI中间件同时实现了API的两方,因此可以在WSGI服务和WSGI应用之间起调解作用:从WSGI服务器的角度来说,中间件扮演应用程序,而从应用程序的角度来说,中间件扮演服务器。“中间件”组件可以执行以下功能:

重写环境变量后,根据目标URL,将请求消息路由到不同的应用对象。

允许在一个进程中同时运行多个应用程序或应用框架。

负载均衡和远程处理,通过在网络上转发请求和响应消息。

进行内容后处理,例如应用XSLT样式表。

以前,如何选择合适的Web应用程序框架成为困扰Python初学者的一个问题,这是因为,一般而言,Web应用框架的选择将限制可用的Web服务器的选择,反之亦然。那时的Python应用程序通常是为CGI,FastCGI,mod_python中的一个而设计,甚至是为特定Web服务器的自定义的API接口而设计的。WSGI没有官方的实现,因为WSGI更像一个协议。只要遵照这些协议,WSGI应用(Application)都可以在任何服务器(Server)上运行,反之亦然。WSGI就是Python的CGI包装,相对于Fastcgi是PHP的CGI包装。

WSGI将web组件分为三类:web服务器,web中间件,web应用程序,wsgi基本处理模式为:WSGIServer-(WSGIMiddleware)*-WSGIApplication。

uwsgi:

uwsgi协议是一个uWSGI服务器自有的协议,它用于定义传输信息的类型(typeofinformation),每一个uwsgipacket前4byte为传输信息类型描述,它与WSGI相比是两样东西。据称其效率是fcgi的10倍。具体的协议内容请参考:theuwsgiprotocol(
  uWSGI项目旨在为部署分布式集群的网络应用开发一套完整的解决方案。uWSGI主要面向web及其标准服务,已经成功的应用于多种不同的语言。由于uWSGI的可扩展架构,它能够被无限制的扩展用来支持更多的平台和语言。目前,你可以使用C,C++和Objective-C来编写插件。项目名称中的“WSGI”是为了向同名的PythonWeb标准表示感谢,因为WSGI为该项目开发了第一个插件。uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、
  和uWSGi类似的工具,从rails的部署工具(Unicorn)移植过来的。但是它使用的协议是前文所讲的WSGI,这是python2.5时定义的官方标准(PEP),根红苗正,而且部署比较简单,详细的使用教程
  Tornado即使一款python的开发框架,也是一个异步非阻塞的
  Python自带的实现了WSGI协议的的wsgiserver。wsgiserver可以理解为一个符合wsgi规范的webserver,接收request请求,封装一系列环境变量,按照wsgi规范调用注册的wsgiapp,最后将response返回给客户端。Django的自带服务器就是它了。

以上都可以理解为实现!实现!实现!实现了协议的工具!

注:mod_wsgi(apache的模块)其实也是实现了wsgi协议的一个模块,现在几乎不废弃了,所以也不多说了,感兴趣的自己查一下吧。

所以如果你采用Django框架开发了应用之后,想部署到生产环境,肯定不能用Django自带的,可以用使用uwsgi协议的uWSGI服务器,也可以采用实现了WSGI协议的gunicorn或者Tornado,亦可以用FastCGI、CGI模式的Nginx、lig

1
查看完整版本: PythonWeb部署方式总结