WSGI简介

客户端发起了一条HTTP请求。。

服务器接受,解析,构造header,从web应用那里拿HTML文档,构造HTTP响应,发送响应。。

客户端接受,抽取HTML文档,显示。完毕。


太麻烦了,这么多的细节,在开发过程中,我们关注的只是HTTP请求以及对应的HTML文档啊,当然是选择把精力花在这里啦。所以,抽象吧,把服务器与web应用的通信细节包装起来,以后就可以不用去管他们啦!!

python中,这个抽象就是WSGI接口,即web server gateway interface. 官方解释为:Web服务器软件和用Python编写的Web应用程序之间的标准接口。【1】

嗯, 它长这个样子:(对, 这个接口是一个可调用的对象,一个函数或类)

下面以函数为例:

def hello_world_app(environ, start_response):
    status = '200 OK'  # HTTP Status
    headers = [('Content-type', 'text/plain; charset=utf-8')]  # HTTP Headers
    start_response(status, headers)

    # The returned object is going to be printed
    return [b"Hello World"]

好了,上面的environ就是关于HTTP请求信息的环境变量,dict对象。

           start_respond函数发送响应头部,包括响应码,显然,其不可以单独发送,必须等待程序处理HTML文档之后才发送。关于具体的参数与使用见:https://www.python.org/dev/peps/pep-3333/#the-start-response-callable


等等,两个参数由谁提供,还有,谁来调用?当然是服务器啦,看那个函数,其中web应用已经提供了HTML文档了,就是b"Hello World",它又是一个接口,那差的肯定就是服务器啦。


给它一个 服务器环境,python标准库的wsgiref,然后这样做,

from wsgiref.simple_server import make_server

httpd = make_server('', 8000, hello_world_app)
print("Serving on port 8000...")

# Serve until process is killed
httpd.serve_forever()

运行,打开 http://localhost:8000

一个小的web应用搞成了。就是说,接下来,我们仅需专注与那个接口对象就行了。

这就是wsgi简单介绍。




参考:

使用Web框架 - 廖雪峰的官方网站

python文档




  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
WSGI是Python Web Server Gateway Interface的缩写,是Python应用程序或框架和Web服务器之间的一种接口,用于在Web服务器上运行Python Web应用程序。在Windows上使用WSGI,可以通过以下步骤实现: 1.安装mod_wsgi模块:可以从官方网站(https://www.lfd.uci.edu/~gohlke/pythonlibs/#mod_wsgi)下载对应版本的mod_wsgi模块,然后使用pip进行安装。 2.配置Apache服务器:在httpd.conf文件中添加以下内容: ```apache LoadModule wsgi_module "C:/Python27/Lib/site-packages/mod_wsgi/server/mod_wsgi.pyd" WSGIScriptAlias /myapp "C:/path/to/myapp.wsgi" <Directory "C:/path/to"> Order allow,deny Allow from all </Directory> ``` 其中,第一行是加载mod_wsgi模块,第二行是指定WSGI应用程序的URL路径和WSGI文件的路径,第三至五行是指定WSGI文件所在目录的访问权限。 3.编写WSGI应用程序:创建一个名为myapp.wsgi的文件,编写WSGI应用程序的代码,例如: ```python def application(environ, start_response): status = '200 OK' output = 'Hello World!' response_headers = [('Content-type', 'text/plain'), ('Content-Length', str(len(output)))] start_response(status, response_headers) return [output] ``` 其中,application函数是WSGI应用程序的入口,environ是一个包含HTTP请求信息的字典,start_response是一个回调函数,用于发送HTTP响应头,返回值是HTTP响应体。 4.启动Apache服务器:在命令行中输入httpd命令启动Apache服务器,然后在浏览器中访问http://localhost/myapp即可看到Hello World!的输出。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值