python uwsgi实现的简单web服务器,一共用了8行代码。
先说一下web领域的几个概念,主要是举例:
web服务器:apache、iis、nginx等。
web应用服务器:tomcat、jboss、weblogic、iis等。
web应用程序:jsp,asp,php,python等。
先说说wsgi,wsgi全称 web server gateway interface,是把python服务器应用程序连接到web服务器的通用协议。由于wsgi的通用性,出现了独立的wsgi程序,如我们用的uwsgi,还有Apache的mod_wsgi模块。
wsgi接口分为2个:
(1)与web服务器的接口
(2)与服务器程序的接口,这个接口很简单so easy,这是我们主要关注的。
下面是一个服务器程序的例子:
1、下载uwsgi
[root@wc1 Desktop]# pip install uwsgi
Collecting uwsgi
Downloading uwsgi-2.0.14.tar.gz (788kB)
100% |████████████████████████████████| 798kB 35kB/s
Installing collected packages: uwsgi
Running setup.py install for uwsgi ... done
Successfully installed uwsgi-2.0.14
2、服务器程序
这个代码就是定义了一个application函数,函数中直接调用了start_response函数响应请求(这个函数不是我们写的,是一个约定,wsgi自动传过来的,我们只需要调用一下),有2个参数:一个是状态码,一个是指定了返回消息的类型是文本html。
然后就返回一个http消息体,斜体的:hello,world!
代码保存为:web_app.py
def application(environ,start_response):
start_response('200 OK',[('Content-Type','text/html')])
return '<p><i>Hello,world!</i></p>'
3、wsgi 服务器程序
先从文件夹wsgiref中文件simple_server,导入函数make_server。
然后,从web_app.py文件导入我们上面刚写的函数application函数。
启动make_server作为wsgi的容器,第2个参数是web端口,第3个参数是就是我们上面写的application函数,对请求返会一个hello,world!
最后,通过调用容器server的serve_forever函数来运行这个容器,开始接受请求。
代码保存为:wsgi_server.py
from wsgiref.simple_server import make_server
from web_app import application
server = make_server('',8080,application)
server.serve_forever()
4、运行wsgi服务器程序
[root@wc1 Desktop]# python wsgi_server.py
6、wsgi服务器程序的输出