Exemple #1
0
def test_promise_then():
    p = Promise()
    d = {}
    v = p.then(lambda v: d.setdefault('key', v))
    p.resolve('value')
    assert v.value == 'value'
    assert d['key'] == 'value'
Exemple #2
0
def test_promise_resolve():
    p = Promise()
    assert p.is_pending
    assert not p.is_resolved
    assert p.value is None
    p.resolve('value')
    assert not p.is_pending
    assert p.is_resolved
    assert p.value == 'value'
    with pytest.raises(RuntimeError):
        p.resolve('value again')
Exemple #3
0
 def wrapper(*args, **kwargs):
     cache_args = args
     # handle self and cls
     if has_self:
         if not include_self:
             cache_args = args[1:]
     cache_key = generate_key_for_cached_func(
         key_prefix, f, *cache_args, **kwargs)
     if self._running_mode == BATCH_MODE:
         promise = Promise()
         self._pending_operations.append(
             (f, args, kwargs, promise, cache_key, expire))
         return promise
     rv = self._raw_get(cache_key)
     if rv is None:
         value = f(*args, **kwargs)
         self.set(cache_key, value, expire)
         rv = self.serializer.dumps(value)
     return self.serializer.loads(rv)