1+ import datetime
2+
13from .key import KEY
24from .lru import LRU
3- import datetime
45
56
67class AsyncTTL :
78 class _TTL (LRU ):
89 def __init__ (self , time_to_live , maxsize ):
910 super ().__init__ (maxsize = maxsize )
1011
11- self .time_to_live = datetime . timedelta (
12- seconds = time_to_live
13- ) if time_to_live else None
12+ self .time_to_live = (
13+ datetime . timedelta ( seconds = time_to_live ) if time_to_live else None
14+ )
1415
1516 self .maxsize = maxsize
1617
@@ -31,13 +32,13 @@ def __getitem__(self, key):
3132
3233 def __setitem__ (self , key , value ):
3334 ttl_value = (
34- datetime .datetime .now () + self .time_to_live
35- ) if self .time_to_live else None
35+ (datetime .datetime .now () + self .time_to_live )
36+ if self .time_to_live
37+ else None
38+ )
3639 super ().__setitem__ (key , (value , ttl_value ))
3740
38- def __init__ (
39- self , time_to_live = 60 , maxsize = 1024 , skip_args : int = 0
40- ):
41+ def __init__ (self , time_to_live = 60 , maxsize = 1024 , skip_args : int = 0 ):
4142 """
4243
4344 :param time_to_live: Use time_to_live as None for non expiring cache
@@ -48,9 +49,9 @@ def __init__(
4849 self .skip_args = skip_args
4950
5051 def __call__ (self , func ):
51- async def wrapper (* args , ** kwargs ):
52+ async def wrapper (* args , use_cache = True , ** kwargs ):
5253 key = KEY (args [self .skip_args :], kwargs )
53- if key in self .ttl :
54+ if key in self .ttl and use_cache :
5455 val = self .ttl [key ]
5556 else :
5657 self .ttl [key ] = await func (* args , ** kwargs )
0 commit comments