编程语言应用

注册

 

发新话题 回复该主题

Python用来开发Web是怎么样的一个 [复制链接]

1#

#PythonWeb#

最近有一些人问我,PythonWeb部署的流程是怎么一回事,说到底,太需要一篇这样一篇文章来详细说清楚,到底什么是WSGI,什么是uWSGI,既然有了uWSGI,为什么需要Apache和Nginx?我自己以前也在这方面走了太多弯路。

事实上,基本所有学习PythonWeb框架的书籍都没有讲到这一点。

什么是WSGI?

开始介绍什么是WSGI之前,一定要说说CGI,因为目前PythonWeb支持这两种方式作为开发,一种是WSGI,一种是CGI。

当然,CGI任何语言都可以用来写Web应用,无论是Python,C还是perl,甚至是Shell。

WSGI(PythonWebServerGatewayInterface),PythonWeb服务器网关接口,它起初是用来代替CGI这种不够安全的网关协议,用于Web应用和web服务器之间交互的一个协议。

WSGI过程如图:

值得注意的是,WSGI起源于Python,此后很多编程语言开始效仿Python的WSGI接口,例如:Ruby的Rack、Lua的LuaWSAPI,Perl的PSGI等等,事实上都是受WSGI影响。

如果你对WSGI有深入的兴趣,一定要去看看werkzeug这个WSGI工具库。

什么又是CGI?

CGI(CommonGatewayInterface),通用网关接口。却是如此,任何编程语言都可以使用CGI来写Web应用,因为CGI的过程相当相当简单,不够安全是因为它可以直接执行服务器上的任何可执行文件,这是相当致命的,所以,千万不要用CGI来开发。

CGI过程如图:

没错,如果你接触过PHP的话,可以想象得到,PHP上面的echo(Hello)和Python上面的print(Hello)实际上是一回事,WebServer只是管道了应用程序的输出作为输入,然后做一系列处理后发送给客户端。

值得注意的是,几乎所有的WebServer都集成了CGI支持,所以流畅方面和WSGI最大的区别在于,WSGi多了个中间件。

不过这种方式写Web不够安全不说,并且很不方便。

Python如何使用CGI方式开发Web,我想我后面会有一篇文章来具体讲讲。

WSGI和CGI流程详解

先说说CGI流程是如何的:用户request请求-Apache/Nginx(集成CGI支持)-PythonWeb应用

WSGI流程则是:用户request-Apache/Nginx-uWSGI/Gunicorn(WSGI支持)-PythonWeb应用

CGI流程很简单,一看就懂,那么WSGI中的uWSGI和Gunicorn又是什么东西?

uWSGI和Gunicorn(独角兽)是目前流行两款WSGI服务器,它们承载着WSGI协议。

那么问题来了,有了uWSGI为什么还需要Apache和Nginx,这个就很好解释了。

我总结了以下几点:

Apache和Nginx是目前最火的两款WebServer无可否认。

1、Apache和Nginx对文件处理速度更佳

2、Apache和Nginx对访问限制、速度优化等等效果更佳

3、解决虚拟主机、SSL证书问题,Apache和Nginx更适合

目前全世界都在用这个你认为多此一举(我以前也是这么认为的)的事,事实上,确实uWSGI和Gunicorn在Web方面确实不如强大的Apache和Nginx。

某些CSDN作者请勿复制粘贴,码字不易,请备注出处链接,谢谢理解。

斌哥说Python,只专注于Python技术!

分享 转发
TOP
发新话题 回复该主题