コード例 #1
0
ファイル: ttl.py プロジェクト: tdakkota/vkwave
 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)
コード例 #2
0
    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)
コード例 #3
0
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
コード例 #4
0
 def __init__(self, default_ttl: TTL = TTL(10)):
     self.data: typing.Dict[Key, typing.Tuple[Value, TTL]] = {}
     self.default_ttl = default_ttl