My favorites
|
Sign in
corey-projects
open source projects by Corey Goldberg
Project Home
Source
Checkout
|
Browse
|
Changes
|
‹r2
r13
Source path:
svn
/
trunk
/
url_timer.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
#!/usr/bin/env python
# Corey Goldberg - October 2009
import httplib
import sys
import time
def main():
if len(sys.argv) != 3:
print 'usage:\nurl_timer.py <url> <interval>\n'
sys.exit(1)
url = sys.argv[1]
interval = int(sys.argv[2])
if url.startswith('https://'):
location = url.replace('https://', '')
use_ssl = True
elif url.startswith('http://'):
location = url.replace('http://', '')
use_ssl = False
else:
location = url
use_ssl = False
if '/' in location:
parts = location.split('/')
host = parts[0]
path = '/' + '/'.join(parts[1:])
else:
host = location
path = '/'
run(host, path, interval, use_ssl)
def run(host, path, interval, use_ssl=False):
# select most accurate timer based on platform
if sys.platform.startswith('win'):
default_timer = time.clock
else:
default_timer = time.time
request_sent_times = []
response_received_times = []
content_transferred_times = []
sizes = []
print 'request sent'.ljust(20),
print 'response received'.ljust(20),
print 'content transferred'.ljust(20),
print 'size'
print '------------'.ljust(20),
print '-----------------'.ljust(20),
print '-------------------'.ljust(20),
print '----'
while True:
start_run = default_timer()
if use_ssl:
conn = httplib.HTTPSConnection(host)
else:
conn = httplib.HTTPConnection(host)
start = default_timer()
conn.request('GET', path)
request_time = default_timer()
resp = conn.getresponse()
response_time = default_timer()
size = len(resp.read())
conn.close()
transfer_time = default_timer()
request_sent_times.append(request_time - start)
response_received_times.append(response_time - start)
content_transferred_times.append(transfer_time - start)
sizes.append(size)
print '%.4f' % (request_time - start),
print ('(%.4f)' % (sum(request_sent_times) / len(request_sent_times))).ljust(13),
print '%.4f' % (response_time - start),
print ('(%.4f)' % (sum(response_received_times) / len(response_received_times))).ljust(13),
print '%.4f' % (transfer_time - start),
print ('(%.4f)' % (sum(content_transferred_times) / len(content_transferred_times))).ljust(13),
print '%i bytes' % size,
print '(%.3f MB total)' % (sum(sizes) / 1000000.0)
elapsed_time = default_timer() - start_run
if interval > elapsed_time:
time.sleep(interval - elapsed_time)
if __name__ == '__main__':
try:
main()
except KeyboardInterrupt:
sys.exit(0)
Show details
Hide details
Change log
r3
by cgoldberg on Oct 18, 2009
Diff
[No log message]
Go to:
/trunk/http_request_profiler.py
/trunk/url_timer.py
Project members,
sign in
to write a code review
Older revisions
r2
by cgoldberg on Oct 18, 2009
Diff
[No log message]
All revisions of this file
File info
Size: 2889 bytes, 107 lines
View raw file
Hosted by