I wonder whether this is a bug for python urllib2.
The following is the code I used:
target = protocol + "://" + location + directory + target_file
start = datetime.now()
try:
urlrequest = urllib2.Request(target)
urlresponse = urllib2.urlopen(urlrequest, timeout=4)
urldata = urlresponse.read()
except (urllib2.URLError, socket.timeout):
return "ERR"
stop = datetime.now()
time_difference = stop - start
print("\ntime diff is " + str(time_difference.total_seconds()))
According to the definition of socket.timeout, time_difference will
be no more than 4 seconds or no part of output.
However, when I print the variable: time_difference.total_seconds() ,
I found that the result commonly is greater than 4 seconds.
I put my detailed code at the Bitbucket:
https://bitbucket.org/mudongliang/apt-spy-python/branch/timecheck
And the code is in the file : apt-spy
The following is the part of my output:
mdl@NjuMdl:~/Repos/Bitbucket/apt-spy-python$ sudo ./apt-spy -d testing
-c CN --http-only
Benchmarking 8 debian-mirrors:
Mirrorname | HTTP Speed
=> checking ftp.cn.debian.org (http) ...
time diff is 14.435451
ftp.cn.debian.org | 775.0 kB/s
=> checking www.anheng.com.cn (http) ...
time diff is 95.854271
www.anheng.com.cn | 116.7 kB/s
=> checking mirrors.163.com (http) ...
time diff is 29.687312
mirrors.163.com | 376.7 kB/s
=> checking debian.bjtu.edu.cn (http) ...
time diff is 3.926047
debian.bjtu.edu.cn | 2.8 MB/s
=> checking debian.ustc.edu.cn (http) ...
time diff is 13.976661
debian.ustc.edu.cn | 800.4 kB/s
=> checking mirrors.sohu.com (http) ...
time diff is 30.373006
mirrors.sohu.com | 368.1 kB/s
=> checking mirrors.tuna.tsinghua.edu.cn (http) ...
time diff is 4.545543
mirrors.tuna.tsinghua.edu.cn | 2.5 MB/s
mirrors.hust.edu.cn | ERR
Mirror with highest throughput: debian.bjtu.edu.cn