From 93c313853d8a47534494196875cd7be63e50a913 Mon Sep 17 00:00:00 2001 From: Daniel Grana Date: Wed, 17 Sep 2008 12:34:48 +0000 Subject: [PATCH] use request.deferred for cached valued too --HG-- extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40250 --- scrapy/trunk/scrapy/contrib/pipeline/media.py | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/scrapy/trunk/scrapy/contrib/pipeline/media.py b/scrapy/trunk/scrapy/contrib/pipeline/media.py index f29e14850..f1ca24a95 100644 --- a/scrapy/trunk/scrapy/contrib/pipeline/media.py +++ b/scrapy/trunk/scrapy/contrib/pipeline/media.py @@ -55,15 +55,17 @@ class MediaPipeline(object): return dlst def _enqueue(self, request, info): - fp = request.fingerprint() - if fp in info.downloaded: - return defer_result(info.downloaded[fp]) - - if fp not in info.downloading: - self._download(request, info, fp) - wad = request.deferred or defer.Deferred() - waiting = info.waiting.setdefault(fp, []).append(wad) + + fp = request.fingerprint() + if fp not in info.downloaded: + cached = info.downloaded[fp] + defer_result(cached).chainDeferred(wad) + else: + info.waiting.setdefault(fp, []).append(wad) + if fp not in info.downloading: + self._download(request, info, fp) + return wad def _download(self, request, info, fp):