最近在做一个性能测试,主要是http协议的,
开始想到用C的线程,在后来的试验中发现,C开发多线程还是比较麻烦的,
后来,想到了python,因为是http下载,curl的libcurl
def run(self):
real_uri=self.get_real_url()
if not real_uri:
return False
try:
try:
curl = pycurl.Curl()
curl.setopt(pycurl.URL, real_uri)
curl.setopt(pycurl.WRITEDATA, self.ofile)
curl.setopt(pycurl.NOPROGRESS, 0)
curl.setopt(pycurl.PROGRESSFUNCTION, self.progress)
#self.curl.setopt(pycurl.WRITEFUNCTION, counter)
curl.setopt(pycurl.FOLLOWLOCATION, 1)
curl.setopt(pycurl.MAXREDIRS, 5)
curl.setopt(pycurl.OPT_FILETIME, 1)
curl.setopt(pycurl.USERAGENT, "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1) ; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648; InfoPath.2)")
#curl.setopt(pycurl.CONNECTTIMEOUT, 60)
#curl.setopt(pycurl.TIMEOUT, 300)
curl.setopt(pycurl.NOSIGNAL, 1)
curl.perform()
finally:
curl.close()
except Exception, e:
print "self.curl.perform() Exception : %s"%e
#if int(e[0]) == 28:
# print "This connection timeout [3000s], %s"%e
return True
实际测试,可以开到2000线程,内存仅仅使用了121M,2G的网卡跑满,感觉很强大
当然,由于这个测试只是取到平均下载速度,不需要实际下载到数据,故可以直接将下载到的数据>/dev/null 这样就可以避免I/O的瓶颈,
libcurl 刚好有一个回调函数,输出当前总下载的数据量
curl.setopt(pycurl.PROGRESSFUNCTION, self.progress)
分享到:
相关推荐
安装pyspider之前需要安装lxml 和 pycurl ,但是在安装pycurl的过程中遇到了同样的错误 解决方案是安装wheel 和到 http://www.lfd.uci.edu/~gohlke/pythonlibs/#pycurl 这个网址下载相应版本的pycurl ,如果是64...
pycurl 基于curl 官方只出版了32位版本 在http://www.lfd.uci.edu/~gohlke/pythonlibs/#pycurl中有非官方的64位版本
pycurl-7.43.1-cp37-cp37m-win_amd64 PycURL。 PycURL is a Python interface to libcurl. PycURL can be used to fetch objects identified by a URL from a Python program, similar to the urllib Python module....
pycurl-7.43.0.2 Windows64位安装包,Windows安装pycurl,支持python版本3.6
pycurl+pyspider+phabtomjs, pycurl+pyspider+phabtomjs
pycurl-7.43.0.3-cp37-cp37m-win32.whl, pyCurl 适用于windows平台,32位的python 3.7
PycURL_中文版官方文档
资源来自pypi官网。 资源全名:pycurl-7.43.0.5-cp35-cp35m-win_amd64.whl
pycurl-7.43.0.3-cp38-cp38m-win_amd64.whl ,pyCurl,适用于Windows,64 位, python 3.8
pycurl-7.43.0.4-cp38-cp38-win_amd64.whl官网下载很慢,把自己下载的一些上传给大家下载,速度更快。
pycurl 统计网络传输时间,下载数据包大小,建立连接时间,平均下载速度
python常用pycurl-7.43.0.1.便于下载。
python pycurl win32 python2.6 msi
64位windows pycurl安装包,可以直接按照后使用!已经在多台服务器上验证过!
pycurl-7.43.0.3-cp38-cp38m-win32.whl, pyCurl, 适用于Windows,32位 python 3.8
Pycurl的安装与使用.doc
pycurl-7.19.0.win32-py2.7,提供免费下载,你懂得。
PycURL(Windows7/Win32)Python2.7安装包 Pypycurl-7.19.0.win32-py2.7 PycURL is a interface to the libcurl library.
PycURL is a Python interface to libcurl. PycURL can be used to fetch objects identified by a URL from a Python program, similar to the urllib Python module. PycURL is mature, very fast, and supports a...
pycurl-7.18.2.tar.gz