maxSimultaneousUsers = 8
import sys
from twisted.internet import reactor
from twisted.internet.defer import succeed, DeferredList
from twisted.web.client import getPage
from tester import urlForUser
def getUser(user):
return getPage(urlForUser(user))
def gotUser(data, user):
return nextUser()
def nextUser():
if not users:
return succeed(None)
user = users.pop()
d = getUser(user)
d.addBoth(gotUser, user)
return d
##
# Do The Right Thing
##
users = sys.argv[1:]
#
# Create a deferred list where each deferred in the list is a work
# queue.
#
ds = []
c = maxSimultaneousUsers
while (c):
ds.append(nextUser())
c -= 1
d = DeferredList(ds)
d.addBoth(lambda _: reactor.stop())
reactor.run()