7

我想收集与 Web 请求的每个阶段需要多长时间相关的统计信息。httplib提供:

def run(self):
    conn = httplib.HTTPConnection('www.example.com')
    start = time.time()
    conn.request('GET', '/')
    request_time = time.time()
    resp = conn.getresponse()
    response_time = time.time()
    conn.close()
    transfer_time = time.time()

    self.custom_timers['request sent'] = request_time - start
    self.custom_timers['response received'] = response_time - start
    self.custom_timers['content transferred'] = transfer_time - start

    assert (resp.status == 200), 'Bad Response: HTTP %s' % resp.status

这些统计信息是否可以从更高级别的界面(例如 )获得urllib2?是否有提供此类统计数据的高级图书馆?

4

2 回答 2

1

正如在相关问题中提到的,现在执行此操作的一个好方法是使用requests库。您可以使用它来测量请求延迟,但我不确定您是否可以测量内容传输时间。您可以通过将 HEAD 请求与 GET 请求进行比较来实现这一点。

于 2014-12-12T21:33:19.420 回答
0

time.time 不是最可靠和最精确的。您可以在 python 中使用 timeIt 模块进行分析。http://docs.python.org/library/timeit.html 这是一个使用 timeit 的代码片段

    statmnt = 'print "Replace print with the snippet you want to profile"'
    setup = 'print "Replace this line with some snippet specific imports"' 
    n = 1 #Number of times you want the timeit module to execute the statmnt
    t = timeit.Timer(statmnt, setup)
    qTime = t.timeit(n)

在您的情况下,您将不得不为请求、响应和内容创建三个 timeit 对象。请参阅文档以获取有关模块 timeit 的更多信息

于 2012-08-20T15:07:38.423 回答