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