使用python3.6 aiohttp可以获取以下所有我在发出请求时使用pycurl的统计信息。
name_lookup_time = curl_handle.getinfo(pycurl.NAMELOOKUP_TIME)
connect_time = curl_handle.getinfo(pycurl.CONNECT_TIME)
app_connect_time = curl_handle.getinfo(pycurl.APPCONNECT_TIME)
pre_transfer_time = curl_handle.getinfo(pycurl.PRETRANSFER_TIME)
start_transfer_time = curl_handle.getinfo(pycurl.STARTTRANSFER_TIME)
total_time = curl_handle.getinfo(pycurl.TOTAL_TIME)
redirect_time = curl_handle.getinfo(pycurl.REDIRECT_TIME)
redirect_cnt = curl_handle.getinfo(pycurl.REDIRECT_COUNT)
total_size = curl_handle.getinfo(pycurl.SIZE_DOWNLOAD)
当前,我正在使用我的搜寻器中的pycurl multi实现来发出请求,然后我有了收集每个请求详细数据的代码。替换pycurl并学习一些新知识。我有兴趣用aiohttp客户端实现替换发出请求的pycurl multi代码。
在阅读aiohttp(https://aiohttp.readthedocs.io/en/stable/client_reference.html#aiohttp.ClientResponse)文档时,我发现可以通过查看并计算作为ClientResponse对象一部分的历史记录Sequence来获得redirect_cnt。
history
A Sequence of ClientResponse objects of preceding requests (earliest request first) if there were redirects, an empty sequence otherwise.
我可以不用大部分的详细时间数据。但是我想为我的最低要求收集total_time和total_size。