[Twisted-Python] Setting a timeout for HTTPDownloader
Edd Dumbill
edd at usefulinc.com
Tue Aug 12 08:22:57 MDT 2003
On Tue, 2003-08-12 at 14:48, Glyph Lefkowitz wrote:
> I certainly haven't tested this, but in your SpiderSender subclass, you
> probably want something like
>
> myTimeout = 120 # seconds
> def notifyDownloadStart(self, uri):
> reactor.callLater(self.myTimeout, self._timeOut, uri)
> # rest of notifyDownloadStart
>
> def _timeOut(self, uri):
> if self.downloaders.has_key(uri):
> self.downloaders[uri].loseConnection()
>
Thanks, I'll try that. I think it was the loseConnection() bit I was
missing.
My interim solution is a bit nuttier, and I'm not actually convinced it
works, either, but it did allow me to find a bug with 302 redirect loops
(issue 99!)
class TimeOutHTTPPageDownloader(client.HTTPPageDownloader,TimeoutMixin):
def connectionMade (self):
self.setTimeout (30)
client.HTTPPageDownloader.connectionMade (self)
class HTTPDownloader(client.HTTPDownloader):
protocol = TimeOutHTTPPageDownloader
...
-- Edd
More information about the Twisted-Python
mailing list