【问题标题】:Getting DNS resolution time and response time with Python使用 Python 获取 DNS 解析时间和响应时间
【发布时间】:2015-06-12 12:27:42
【问题描述】:

PycURL 或任何其他 python pakcage 是否提供以下信息:

  • 查找
  • 连接时间

我想获得与此 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

【问题讨论】:

  • 您只是在寻找实现此功能的方法吗?你想写一个工具吗?您是否在寻找可以帮助实现这一点的库?
  • 我主要是在寻找提供这些指标的库。或使用 PycURL 的实现示例

标签: python curl dns performance-testing pycurl


【解决方案1】:

是的,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

【讨论】:

  • 非常感谢。我认为:HTTP_CODE 和 RESPONSE_CODE 是一样的。
  • 您可能想知道这些选项中的每一个指的是什么,如果您这样做,libcurl curl_easy_getinfo 是该去的地方,需要注意的是,在 pycurl 中“CURLINFO_ 前缀已被删除”按照官方PyCurl doc
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多