WSGI

WSGI

reference: http://webpython.codepoint.net/wsgi_tutorial

WSGI是一种标准,它对web应用和web服务器的交互接口进行了描述,那么遵从WSGI 应用接口的web应用程序就可以在遵从WSGI服务器接口的任意实现上运行。WSGI服务器接受来自所有客户端的请求,并将请求传递给相应的应用程序处理,并返回应用程序的处理结果给客户端。

WSGI web应用的接口实现需要满足可调用,因此接口实现可以是函数、方法、拥有__call__方法的类或实例,我们将其统称为可调用对象。可调用对象还需要满足:

1.拥有两个位置参数:

    (1)包含环境变量的字典(environ)。当有客户端请求时,字典由服务器填充。

    (2)一个可调用的函数(start_response)。向服务器返回状态码和响应头(response header)信息

2.必须以可迭代的方式返回字符串类型的响应体(response body),响应体需要选择合理的可迭代对象,否则会影响性能.

      一个非常简单的满足WSGI应用条件的实例:

     

fromwsgiref.simple_server importmake_server
 
defsimple_app(environ, start_response):
    status ='200 OK'
    response_headers =[('Content-type''text/plain')]
    start_response(status, response_headers)
    #returnu"This is hello wsgi app".encode('utf8')
    return[u"This is hello wsgi app".encode('utf8')]
 
httpd =make_server('', 8000, simple_app)
print"Serving on port 8000..."
httpd.serve_forever()

若返回的响应体为注释的信息,则服务器会一个字符一个字符的传送,效率自然就很慢了




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、付费专栏及课程。

余额充值