Curl 测量的时间看起来令人困惑 - 我总是看到 APPCONNECT_TIME 甚至高于 TOTAL_TIME。我还希望 APPCONNECT_TIME 小于 STARTTRANSFER_TIME,因为后者测量接收到第一个字节的时间,而 APPCONNECT_TIME 在 TCP/TLS 握手操作之前。
c = pycurl.Curl()
c.setopt(c.URL, url)
c.setopt(c.WRITEFUNCTION, lambda x: None)
c.setopt(c.WRITEFUNCTION, buffer.write)
c.setopt(c.HEADERFUNCTION, header_function)
c.perform()
total_time = round(c.getinfo(pycurl.TOTAL_TIME) * 1000, 1)
namelookup_time = round(c.getinfo(pycurl.NAMELOOKUP_TIME) * 1000, 1)
connect_time = round(c.getinfo(pycurl.CONNECT_TIME) * 1000, 1)
appconnect_time = round(c.getinfo(pycurl.APPCONNECT_TIME) * 1000, 1)
pretransfer_time = round(c.getinfo(pycurl.PRETRANSFER_TIME) * 1000, 1)
starttransfer_time = round(c.getinfo(pycurl.STARTTRANSFER_TIME) * 1000, 1)
download_speed = round(c.getinfo(pycurl.SPEED_DOWNLOAD) /1000, 1) #Kbps
remote_ip = c.getinfo(pycurl.PRIMARY_IP)
headers_size = c.getinfo(pycurl.HEADER_SIZE)
size_download = c.getinfo(pycurl.SIZE_DOWNLOAD)
results.append([request_nr, total_time, namelookup_time, connect_time, appconnect_time, pretransfer_time, starttransfer_time, download_speed, remote_ip,
headers_size, size_download])
c.close()
print(tabulate(
results,
tablefmt='grid',
headers=["Request Nr", "Download time", "namelookup_time", "Connect (TCP)", "Appconnect (TCP + SSL)", "Pretransfer", "Start Transfer", "User speed", "Remote IP",
"Headers Size", "Download Size"]
)
)
+--------------+-----------------+-------------------+-----------------+--------------------------+---------------+------------------+--------------+--------------+----------------+-----------------+
| Request Nr | Download time | namelookup_time | Connect (TCP) | Appconnect (TCP + SSL) | Pretransfer | Start Transfer | User speed | Remote IP | Headers Size | Download Size |
+==============+=================+===================+=================+==========================+===============+==================+==============+==============+================+=================+
| 0 | 367 | 26.7 | 230.1 | 505.9 | 275.9 | 366.8 | 14.2 | 54.230.96.25 | 1160 | 5226 |
+--------------+-----------------+-------------------+-----------------+--------------------------+---------------+------------------+--------------+--------------+----------------+-----------------+