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