Example #1
0
 def addRequest(self, uri, file,exitfunc):
     self.exitfunc=exitfunc
     if len(self.deferreds) >= self.SIZE:
         # wait for completion of all previous requests
         DeferredList(self.deferreds
         ).addCallback(self._callback)
         self.deferreds = []
         
         # queue the request
         deferred = Deferred()
         self.requests.append((uri, file,deferred))
         
         return deferred
     else:
         # execute the request now
         #deferred = downloadPage(url, file)
         host, port, url = MyUtils.parse(uri)
         f = client.HTTPDownloader(uri, file)
         f.deferred.addCallbacks(callback=self.exitfunc,
                             callbackArgs=(file,) )
                 
         self.deferreds.append(f.deferred)
         reactor.connectTCP(host, port, f)
         
         return f.deferred
Example #2
0
 def _callback(self):
     if len(self.requests) >self.SIZE:
         queue = self.requests[:self.SIZE]
         self.requests = self.requests[self.SIZE:]
     else:
         queue = self.requests[:]
         self.requests = []
     
     # execute the requests
     for (uri,file,  deferredHelper) in queue:
         
         host, port, url = MyUtils.parse(uri)
         f = client.HTTPDownloader(uri, file)
         f.deferred.addCallbacks(callback=self.exitfunc,    callbackArgs=(file,))
                 
         self.deferreds.append(f.deferred)
         reactor.connectTCP(host, port, f)            
                 
         f.deferred.chainDeferred(deferredHelper)