1212import time
1313
1414from diskcache import Cache
15- from django .core .cache .backends .base import DEFAULT_TIMEOUT , BaseCache
15+ from django .core .cache .backends .base import BaseCache
1616
1717
1818class FileCache (BaseCache ):
@@ -29,35 +29,42 @@ def _createdir(self):
2929 finally :
3030 os .umask (old_umask )
3131
32- def add (self , key , value , timeout = DEFAULT_TIMEOUT , version = None ):
32+ def add (self , key , value , timeout = None , version = None ):
3333 expire = timeout if isinstance (timeout , int ) or isinstance (timeout ,
3434 float ) or timeout is None else timeout .total_seconds ()
35- return self .cache .add (key , value = value , expire = expire )
35+ return self .cache .add (self . get_key ( key , version ) , value = value , expire = expire )
3636
37- def set (self , key , value , timeout = DEFAULT_TIMEOUT , version = None ):
37+ def set (self , key , value , timeout = None , version = None ):
3838 expire = timeout if isinstance (timeout , int ) or isinstance (timeout ,
3939 float ) or timeout is None else timeout .total_seconds ()
40- return self .cache .set (key , value = value , expire = expire )
40+ return self .cache .set (self . get_key ( key , version ) , value = value , expire = expire )
4141
4242 def get (self , key , default = None , version = None ):
43- return self .cache .get (key , default = default )
43+ return self .cache .get (self .get_key (key , version ), default = default )
44+
45+ @staticmethod
46+ def get_key (key , version ):
47+ if version is None :
48+ return f"default:{ key } "
49+ return f"{ version } :{ key } "
4450
4551 def delete (self , key , version = None ):
46- return self .cache .delete (key )
52+ return self .cache .delete (self . get_key ( key , version ) )
4753
48- def touch (self , key , timeout = DEFAULT_TIMEOUT , version = None ):
54+ def touch (self , key , timeout = None , version = None ):
4955 expire = timeout if isinstance (timeout , int ) or isinstance (timeout ,
5056 float ) else timeout .total_seconds ()
5157
52- return self .cache .touch (key , expire = expire )
58+ return self .cache .touch (self . get_key ( key , version ) , expire = expire )
5359
54- def ttl (self , key ):
60+ def ttl (self , key , version = None ):
5561 """
5662 获取key的剩余时间
5763 :param key: key
5864 :return: 剩余时间
65+ @param version:
5966 """
60- value , expire_time = self .cache .get (key , expire_time = True )
67+ value , expire_time = self .cache .get (self . get_key ( key , version ) , expire_time = True )
6168 if value is None :
6269 return None
6370 return datetime .timedelta (seconds = math .ceil (expire_time - time .time ()))
0 commit comments