2015-06-12 69 views
3

不PycURL或任何其他Python pakcage提供以下信息:获取DNS解析时间和响应时间与Python

  • 查找
  • 连接时间

我想获得相同的信息这个cURL命令(不使用子进程调用命令):

命令

curl -s -w '\nLookup time:\t%{time_namelookup}\nConnect time:\t%{time_connect}\nPreXfer time:\t%{time_pretransfer}\nStartXfer time:\t%{time_starttransfer}\n\nTotal time:\t%{time_total}\n' -o /dev/null http://stackoverflow.com/ 

输出:

Lookup time: 0.029 
Connect time: 0.144 
PreXfer time: 0.144 
StartXfer time: 0.263 

Total time: 0.803 
+0

您是否正在寻找实现此目标的方法?你想写一个工具吗?你是否在一个可以帮助实现这一目标的库之后? –

+0

我主要在寻找提供这些指标的图书馆。或者使用PycURL – 4m1nh4j1

回答

4

是,PyCurl提供的信息。您可以使用pycurl来推导信息。它可以提供很多细节,而不仅仅是你提到的细节。

下面是一个示例代码,你可以用它来得到相同的信息:

import pycurl 
from io import BytesIO 

buffer = BytesIO() 
c = pycurl.Curl() 
c.setopt(c.URL, 'http://stackoverflow.com/') 
c.setopt(c.WRITEDATA, buffer) 
c.perform() 
body = buffer.getvalue() 

print('TOTAL_TIME: %f' % c.getinfo(c.TOTAL_TIME)) 
print('CONNECT_TIME: %f' % c.getinfo(c.CONNECT_TIME)) 
print('PRETRANSFER_TIME: %f' % c.getinfo(c.PRETRANSFER_TIME)) 
print('STARTTRANSFER_TIME: %f' % c.getinfo(c.STARTTRANSFER_TIME)) 

c.close() 

它提供了以下结果:

TOTAL_TIME: 2.252639 
CONNECT_TIME: 0.331571 
PRETRANSFER_TIME: 0.331634 
STARTTRANSFER_TIME: 0.638206 

我发现了一个GitHub link是提到了一些其它标志作为这可以在你的代码中使用。 以下是快速浏览的标志:

* EFFECTIVE_URL 
* HTTP_CODE 
* TOTAL_TIME 
* NAMELOOKUP_TIME 
* CONNECT_TIME 
* PRETRANSFER_TIME 
* REDIRECT_TIME 
* REDIRECT_COUNT 
* SIZE_UPLOAD 
* SIZE_DOWNLOAD 
* SPEED_UPLOAD 
* HEADER_SIZE 
* REQUEST_SIZE 
* CONTENT_LENGTH_DOWNLOAD 
* CONTENT_LENGTH_UPLOAD 
* CONTENT_TYPE 
* RESPONSE_CODE 
* SPEED_DOWNLOAD 
* SSL_VERIFYRESULT 
* INFO_FILETIME 
* STARTTRANSFER_TIME 
* REDIRECT_TIME 
* REDIRECT_COUNT 
* HTTP_CONNECTCODE 
* HTTPAUTH_AVAIL 
* PROXYAUTH_AVAIL 
* OS_ERRNO 
* NUM_CONNECTS 
* SSL_ENGINES 
* INFO_COOKIELIST 
* LASTSOCKET 
* FTP_ENTRY_PATH 
+0

的实现示例非常感谢。我认为:HTTP_CODE和RESPONSE_CODE是相同的。 – 4m1nh4j1

+0

您可能想知道这些选项各自所指的是什么,如果您[libcurl curl_easy_getinfo](https://curl.haxx.se/libcurl/c/curl_easy_getinfo.html)是您要去的地方,请注意在pycurl中,根据官方的[PyCurl doc](http://pycurl.io/docs/latest/curlobject.html#pycurl.Curl.getinfo),“CURLINFO_前缀已被删除” –