def wrapper(*args, **kwargs): # JIT extend encoder - ensures all types are registered. encoder.initialise() with stores.get_store(partition) as store: # Invoke inner function. obj = func(*args, **kwargs) if obj is None: return # Apply key prefixing. if partition in _USER_PARTITIONS: obj.apply_key_prefix() # Invoke operation applying retry semantics in case of broken pipes. # TODO: revisit connection pooling, attempts = 0 handler = _HANDLERS[operation] while attempts < _MAX_OP_ATTEMPTS: try: return handler(store, obj) except redis.ConnectionError as err: attempts += 1 if attempts == _MAX_OP_ATTEMPTS: raise err time.sleep(float(0.01))
def test_11(): """Test registration of non core types.""" encoder.initialise() from stests.generators.meta import GENERATOR_SET for generator in GENERATOR_SET: for i in generator.TYPE_SET: assert i in encoder.DCLASS_SET
def wrapper(*args, **kwargs): # JIT iniitalise encoder to ensure all types are registered. encoder.initialise() with stores.get_store(partition) as store: if operation == StoreOperation.DELETE: keypath = func(*args, **kwargs) key = ":".join([str(i) for i in keypath]) _delete(store, key) elif operation == StoreOperation.FLUSH: for keypaths in func(*args, **kwargs): key = ":".join([str(i) for i in keypaths]) _flush(store, key) elif operation == StoreOperation.GET: keypath = func(*args, **kwargs) key = ":".join([str(i) for i in keypath]) if key.find("*") >= 0: return _get_all(store, key) else: return _get(store, key) elif operation == StoreOperation.GET_COUNT: keypath = func(*args, **kwargs) key = ":".join([str(i) for i in keypath]) return int(store.get(key)) elif operation == StoreOperation.INCR: keypath = func(*args, **kwargs) key = ":".join([str(i) for i in keypath]) store.incrby(key, 1) elif operation == StoreOperation.LOCK: keypath, data = func(*args, **kwargs) key = ":".join([str(i) for i in keypath]) data = dataclasses.asdict(data) return key, _setnx(store, key, data) elif operation == StoreOperation.SET: keypath, data = func(*args, **kwargs) key = ":".join([str(i) for i in keypath]) _set(store, key, data) return key elif operation == StoreOperation.SET_SINGLETON: keypath, data = func(*args, **kwargs) key = ":".join([str(i) for i in keypath]) was_cached = _setnx(store, key, data) return key, was_cached else: raise NotImplementedError("Cache operation is unsupported")
def test_11(): """Test initialisation.""" assert encoder.IS_INITIALISED == False encoder.initialise() assert encoder.IS_INITIALISED
def initialise(): """Initialises encoder to ensure all types are regsitered. """ _encoder.initialise()