use request.deferred for cached valued too

--HG--
extra : convert_revision : svn%3Ab85faa78-f9eb-468e-a121-7cced6da292c%40250
This commit is contained in:
Daniel Grana 2008-09-17 12:34:48 +00:00
parent 6f2d36199b
commit 93c313853d
1 changed files with 10 additions and 8 deletions

View File

@ -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):