async def put(self, key: Key, value: Value, ttl: typing.Optional[TTL] = None) -> None: if ttl is None: expire = TTL(time.time() + self.default_ttl) elif ttl == -1: expire = TTL(INF) else: expire = TTL(time.time() + ttl) self.data[key] = (value, expire)
def __init__( self, host: str = "localhost", port: int = 6379, db: typing.Optional[int] = None, password: typing.Optional[str] = None, ssl_context: typing.Optional[ssl.SSLContext] = None, pool_size: int = 10, loop: typing.Optional[asyncio.AbstractEventLoop] = None, # dumps object to str dumper: Dumper = json.dumps, # loads object from str loader: Loader = json.loads, default_ttl: TTL = TTL(10), **kwargs, ): self._kwargs = kwargs self._host = host self._port = port self._db = db self._password = password self._ssl = ssl_context self._pool_size = pool_size self._loop = loop or asyncio.get_event_loop() self._dumper = dumper self._loader = loader self._default_ttl = default_ttl self._redis: typing.Optional[aioredis.Redis] = None self._connection_lock = asyncio.Lock(loop=self._loop)
async def ttl_test(storage: AbstractExpiredStorage): await storage.put(Key("my_key"), "my_value", TTL(1)) # one second ttl time.sleep(2) # sleep two second flag = False try: await storage.get(Key("my_key")) # key must not exist except KeyError: flag = True assert flag
def __init__(self, default_ttl: TTL = TTL(10)): self.data: typing.Dict[Key, typing.Tuple[Value, TTL]] = {} self.default_ttl = default_ttl