web.py本身提供profile中间件 web.profiler

在wsgi和自带的httpserver中同样适用

只需要在app.run或者app.wsgifun中传入传入中间件参数web.profiler就可以了

在每个请求返回的网页内容之后会打印分析数值但是有时我们需要数值在后台显示,而不是显示在页面中,这时候我们可以自己改写一下profile中中间件

1
2
3
4
5
6
7
8
class Profile_Middleware(object):
    def __init__(self, app):
        self.app = app
    def __call__(self, mapping, fvars):
        cp = cProfile.Profile()
        r = cp.runcall(self.app, mapping, fvars)
        cp.print_stats()
        return r

把Profile_Middleware当中间件传给web.py,这时候就会正常返回显示页面, 分析信息打印在命令行下了,如果需要打印日志,可以自行更改__call__函数