small bugfix and add bugtraps

--HG--
extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40235
This commit is contained in:
Daniel Grana 2008-09-15 08:57:51 +00:00
parent 6407a744e3
commit ca695c8c79
1 changed files with 10 additions and 1 deletions

View File

@ -35,6 +35,9 @@ class MediaPipeline(object):
assert urls is None or hasattr(urls, '__iter__'), \
'get_urls_from_item should return None or iterable'
def _bugtrap(_failure, request):
log.msg('MediaPipeline Unhandled ERROR in %s: %s' % (request, _failure), log.ERROR, domain=domain)
lst = []
for url in urls or ():
request = url if isinstance(url, Request) else Request(url=url)
@ -45,6 +48,7 @@ class MediaPipeline(object):
errback=self.failed_item_media,
errbackArgs=(item, request, info),
)
dfd.addErrback(_bugtrap, request)
lst.append(dfd)
dlst = defer.DeferredList(lst, consumeErrors=False)
@ -68,16 +72,21 @@ class MediaPipeline(object):
return wad
def _download(self, request, info, fp):
dwld = mustbe_deferred(self.download(request, info))
def _bugtrap(_failure, request):
log.msg('MediaPipeline Unhandled ERROR in %s: %s' % (request, _failure), log.ERROR, domain=info.domain)
dwld = mustbe_deferred(self.download, request, info)
dwld.addCallbacks(
callback=self.media_downloaded,
callbackArgs=(request, info),
errback=self.media_failure,
errbackArgs=(request, info),
)
dwld.addErrback(_bugtrap, request)
dwld.addBoth(self._downloaded, info, fp)
info.downloading[fp] = (request, dwld)
def _downloaded(self, result, info, fp):
info.downloaded[fp] = result # cache result
waiting = info.waiting[fp] # client list