need help with introducing more traffic
leo davis
leo_365 at yahoo.com
Thu Jul 24 11:24:00 EDT 2008
Hiya,
I found this code snippet(reference http://www.goldb.org) and wish to do more with it than just send out a Http Get request.I would like to introduce more traffic -say by downloading files,crawling through all the links,logging in etc etc,and wish to see how the web server reacts.I'm trying to stress the server to its limits....appreciate if anyone could provide me code/ideas to inject into this.
the website -http://ftp.ruby-lang.org/pub/ruby/binaries/mswin32/ selected as example has many downloads.i tried from urllib import urlretrieve
urlretrieve('http://ftp.ruby-lang.org/pub/ruby/binaries/mswin32/ruby-1.6.4-i586-mswin32.zip','ruby-1.6.4-i586-mswin32.zip'),but didnt work.....
[QUOTE]import time
import os
import sys, urllib, re
import httplib
#from urllib import urlretrieve
import urllib2
from threading import Thread
class LoadManager:
def __init__(self):
self.thread_refs = []
self.msg = ('localhost') # default
def stop(self):
for thread in self.thread_refs:
thread.stop()
def start(self, threads=1, interval=0, rampup=1):
for i in range(threads):
spacing = (i * (float(rampup) / float(threads)))
time.sleep(spacing)
agent = LoadAgent(interval, self.msg)
agent.setDaemon(True)
agent.start()
# print 'started thread # ' + str(i + 1)
self.thread_refs.append(agent)
class LoadAgent(Thread):
def __init__(self, interval, msg):
Thread.__init__(self)
self.running = True
self.interval = interval
self.msg = msg
def stop(self):
self.running = False
def run(self):
while self.running:
start_time = time.time()
if self.send(self.msg):
end_time = time.time()
raw_latency = end_time - start_time
expire_time = (self.interval - raw_latency)
latency = ('%.3f' % raw_latency)
print latency
else:
raw_latency = 0
expire_time = (self.interval - raw_latency)
if expire_time > 0:
time.sleep(expire_time)
def send(self, msg):
try:
req = urllib2.Request(msg)
response = urllib2.urlopen(req)
the_page = response.read()
return True
except:
print 'failed request'
return False
def main():
# sample usage
manager = LoadManager()
manager.msg = ('http://ftp.ruby-lang.org/pub/ruby/binaries/mswin32')
manager.start(threads=5, interval=2, rampup=2)
if __name__ == '__main__':
main()[/QUOTE]
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-list/attachments/20080724/0b1830b6/attachment.html>
More information about the Python-list
mailing list