示例#1
0
文件: data.py 项目: altunyurt/kagni
    def expire(self, key, expire_secs):
        if key not in self._storage:
            return 0

        expires_at = (monotonic_ns_time() + expire_secs *
                      (10**9) if expire_secs else None)
        # TODO: already expired?
        self._storage[key].update({"expires_at": expires_at})
        return 1
示例#2
0
文件: data.py 项目: altunyurt/kagni
    def ttl(self, key: bytes):

        if key not in self._storage:
            return -2

        expires_at = self._storage[key]["expires_at"]

        if not expires_at:
            return -1

        ttl = ceil((expires_at - monotonic_ns_time()) / (10**9))
        return ttl if ttl >= 0 else -2
示例#3
0
文件: data.py 项目: altunyurt/kagni
    def __getitem__(self, key):
        if key not in self._storage:
            return None
        val = self._storage[key]

        value = val["value"]
        expires_at = val["expires_at"]
        if not expires_at or expires_at > monotonic_ns_time():
            return value

        # item expired
        del self._storage[key]
        return None
示例#4
0
文件: data.py 项目: altunyurt/kagni
 def __setitem__(self, key, val, expire_secs: int = None):
     # TODO: add type checking for the data
     expires_at = (monotonic_ns_time() + expire_secs *
                   (10**9) if expire_secs else None)
     self._storage.update({key: {"value": val, "expires_at": expires_at}})