Python 如何在CherryPy中计时web请求?

Python 如何在CherryPy中计时web请求?,python,cherrypy,Python,Cherrypy,我想知道CherryPy在收到请求时返回页面需要多长时间。我该怎么办呢?你可以写一个装饰师: import datetime import cherrypy def request_timer(f, *args, **kwargs): def _request_time(f, *args, **kwargs): begin = datetime.datetime.now() response = f(*args, **kwargs) en

我想知道CherryPy在收到请求时返回页面需要多长时间。我该怎么办呢?

你可以写一个装饰师:

import datetime
import cherrypy

def request_timer(f, *args, **kwargs):
    def _request_time(f, *args, **kwargs):
        begin = datetime.datetime.now()
        response = f(*args, **kwargs)
        end = datetime.datetime.now()
        print cherrypy.log('time took for request %s' % (end - begin))
        return response
    return _request_time(f, *args, **kwargs)

class Root(object):

    @request_timer
    def index(*args, **kwargs):
        pass
    index.exposed = True

日志消息将转到屏幕或错误日志文件,具体取决于您的设置。

这取决于您想要测量的确切内容。如果只想计算页面处理程序逻辑的时间,请使用Y.H.Wong发布的代码。如果您想测量客户看到的总时间,请使用以下方法:


按照我对这段代码的理解,它是公开方法执行时间的倍。我想从CherryPy服务器接收请求开始计时,直到它发送响应为止。我目前正在研究CherryPy源代码wsgiserver下的
HTTPConnection
类的
communicate()
方法。这也是我计划使用的方法之一。我实际上是想看看请求在堆栈的每个部分(网络、CherryPy、Cheetah、db等)中花费了多长时间
$ python myproject.py &
$ ab -n 1000 -c 10 http://localhost:8080/myapp