Small optimisation to CacheListDescriptor
parent
266eb3bf26
commit
105f17ff4a
|
@ -102,6 +102,15 @@ class ObservableDeferred(object):
|
|||
def observers(self):
|
||||
return self._observers
|
||||
|
||||
def has_called(self):
|
||||
return self._result is not None
|
||||
|
||||
def has_succeeded(self):
|
||||
return self._result is not None and self._result[0] is True
|
||||
|
||||
def get_result(self):
|
||||
return self._result[1]
|
||||
|
||||
def __getattr__(self, name):
|
||||
return getattr(self._deferred, name)
|
||||
|
||||
|
|
|
@ -321,12 +321,12 @@ class CacheListDescriptor(object):
|
|||
|
||||
try:
|
||||
res = cache.get(tuple(key))
|
||||
if not res.called:
|
||||
if not res.has_succeeded():
|
||||
res = res.observe()
|
||||
res.addCallback(lambda r, arg: (arg, r), arg)
|
||||
cached_defers[arg] = res
|
||||
else:
|
||||
results[arg] = res.result
|
||||
results[arg] = res.get_result()
|
||||
except KeyError:
|
||||
missing.append(arg)
|
||||
|
||||
|
|
Loading…
Reference in New Issue