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()