没有合适的资源?快使用搜索试试~ 我知道了~
详细解读Python的web.py框架下的application.py模块
2 下载量 199 浏览量
2020-09-22
03:05:07
上传
评论
收藏 97KB PDF 举报
温馨提示
试读
7页
主要介绍了Python的web.py框架下的application.py模块,作者深入分析了web.py的源码,需要的朋友可以参考下
资源推荐
资源详情
资源评论
详细解读详细解读Python的的web.py框架下的框架下的application.py模块模块
主要介绍了Python的web.py框架下的application.py模块,作者深入分析了web.py的源码,需要的朋友可以参考下
本文主要分析的是web.py库的application.py这个模块中的代码。总的来说,这个模块主要实现了WSGI兼容的接口,以便应用
程序能够被WSGI应用服务器调用。WSGI是Web Server Gateway Interface的缩写,具体细节可以查看WSGI的WIKI页面
接口的使用接口的使用
使用使用web.py自带的自带的HTTP Server
下面这个例子来自官方文档的Hello World,这个代码一般是应用入口的代码:
import web
urls = ("/.*", "hello")
app = web.application(urls, globals())
class hello:
def GET(self):
return 'Hello, world!'
if __name__ == "__main__":
app.run()
上面的例子描述了一个web.py应用最基本的组成元素:
URL路由表
一个web.application实例app
调用app.run()
其中,app.run()的调用是初始化各种WCGI接口,并启动一个内置的HTTP服务器和这些接口对接,代码如下:
def run(self, *middleware):
return wsgi.runwsgi(self.wsgifunc(*middleware))
与与WSGI应用服务器对接应用服务器对接
如果你的应用要与WSGI应用服务器对接,比如uWSGI,gunicorn等,那么应用入口的代码就要换一种写法了:
import web
class hello:
def GET(self):
return 'Hello, world!'
urls = ("/.*", "hello")
app = web.application(urls, globals())
application = app.wsgifunc()
在这种场景下,应用的代码不需要启动HTTP服务器,而是实现一个WSGI兼容的接口供WSGI服务器调用。web.py框架为我
们实现了这样的接口,你只需要调用application = app.wsgifunc()就可以了,这里所得到的application变量就是WSGI接口(后
面分析完代码你就会知道了)。
WSGI接口的实现分析接口的实现分析
分析主要围绕着下面两行代码进行:
app = web.application(urls, globals())
application = app.wsgifunc()
web.application实例化实例化
初始化这个实例需要传递两个参数:URL路由元组和globals()的结果。
另外,还可以传递第三个变量:autoreload,用来指定是否需要自动重新导入Python模块,这在调试的时候很有用,不过我们
分析主要过程的时候可以忽略。
application类的初始化代码如下:
class application:
def __init__(self, mapping=(), fvars={}, autoreload=None):
if autoreload is None:
autoreload = web.config.get('debug', False)
资源评论
weixin_38680492
- 粉丝: 5
- 资源: 932
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功