gpt4 book ai didi

python - 获取 HTTP 请求的 TTFB(到第一个字节的时间)

转载 作者:可可西里 更新时间:2023-11-01 15:15:52 29 4
gpt4 key购买 nike

这是一个加载 url 并捕获响应时间的 python 脚本:

import urllib2
import time

opener = urllib2.build_opener()
request = urllib2.Request('http://example.com')

start = time.time()
resp = opener.open(request)
resp.read()
ttlb = time.time() - start

由于我的计时器围绕着整个请求/响应(包括 read()),这将给我 TTLB(到最后一个字节的时间)。

我也想获得 TTFB(第一个字节的时间),但不确定从哪里开始/停止我的计时。 urllib2 的粒度是否足以让我添加 TTFB 计时器?如果是这样,他们会去哪里?

最佳答案

你应该使用pycurl,而不是urllib2

  1. 安装pyCurl:
    您可以使用 pip/easy_install,或从源代码安装它。

    easy_install pyCurl

    也许您应该成为 super 用户。

  2. 用法:

    import pycurl
    import sys
    import json

    WEB_SITES = sys.argv[1]

    def main():
    c = pycurl.Curl()
    c.setopt(pycurl.URL, WEB_SITES) #set url
    c.setopt(pycurl.FOLLOWLOCATION, 1)
    content = c.perform() #execute
    dns_time = c.getinfo(pycurl.NAMELOOKUP_TIME) #DNS time
    conn_time = c.getinfo(pycurl.CONNECT_TIME) #TCP/IP 3-way handshaking time
    starttransfer_time = c.getinfo(pycurl.STARTTRANSFER_TIME) #time-to-first-byte time
    total_time = c.getinfo(pycurl.TOTAL_TIME) #last requst time
    c.close()

    data = json.dumps({'dns_time':dns_time,
    'conn_time':conn_time,
    'starttransfer_time':starttransfer_time,
    'total_time':total_time})
    return data

    if __name__ == "__main__":
    print main()

关于python - 获取 HTTP 请求的 TTFB(到第一个字节的时间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/744532/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com