11
11
from valkey .exceptions import ConnectionError , ResponseError , TimeoutError
12
12
from valkey .typing import EncodableT
13
13
14
- from django_valkey .client .default import DefaultClient
14
+ from django_valkey .client .default import BaseDefaultClient , SyncClientMethods
15
15
from django_valkey .exceptions import ConnectionInterrupted
16
- from django_valkey .typing import KeyT
16
+ from django_valkey .typings import KeyT
17
17
18
18
_main_exceptions = (ConnectionError , ResponseError , TimeoutError , socket .timeout )
19
19
@@ -33,32 +33,7 @@ def _is_expired(x, herd_timeout: int) -> bool:
33
33
return val >= herd_timeout
34
34
35
35
36
- class HerdClient (DefaultClient ):
37
- def __init__ (self , * args , ** kwargs ):
38
- self ._marker = Marker ()
39
- self ._herd_timeout : int = getattr (settings , "CACHE_HERD_TIMEOUT" , 60 )
40
- super ().__init__ (* args , ** kwargs )
41
-
42
- def _pack (self , value : Any , timeout ) -> tuple [Marker , Any , int ]:
43
- herd_timeout = (timeout or self ._backend .default_timeout ) + int (time .time ())
44
- return self ._marker , value , herd_timeout
45
-
46
- def _unpack (self , value : tuple [Marker , Any , int ]) -> tuple [Any , bool ]:
47
- try :
48
- marker , unpacked , herd_timeout = value
49
- except (ValueError , TypeError ):
50
- return value , False
51
-
52
- if not isinstance (marker , Marker ):
53
- return value , False
54
-
55
- now = time .time ()
56
- if herd_timeout < now :
57
- x = now - herd_timeout
58
- return unpacked , _is_expired (x , self ._herd_timeout )
59
-
60
- return unpacked , False
61
-
36
+ class SyncHerdMethods (SyncClientMethods ):
62
37
def set (
63
38
self ,
64
39
key : KeyT ,
@@ -207,3 +182,34 @@ def touch(self, key, timeout=DEFAULT_TIMEOUT, version=None, client=None):
207
182
208
183
self .set (key , value , timeout = timeout , version = version , client = client )
209
184
return True
185
+
186
+
187
+ class BaseHerdClient (BaseDefaultClient ):
188
+ def __init__ (self , * args , ** kwargs ):
189
+ self ._marker = Marker ()
190
+ self ._herd_timeout : int = getattr (settings , "CACHE_HERD_TIMEOUT" , 60 )
191
+ super ().__init__ (* args , ** kwargs )
192
+
193
+ def _pack (self , value : Any , timeout ) -> tuple [Marker , Any , int ]:
194
+ herd_timeout = (timeout or self ._backend .default_timeout ) + int (time .time ())
195
+ return self ._marker , value , herd_timeout
196
+
197
+ def _unpack (self , value : tuple [Marker , Any , int ]) -> tuple [Any , bool ]:
198
+ try :
199
+ marker , unpacked , herd_timeout = value
200
+ except (ValueError , TypeError ):
201
+ return value , False
202
+
203
+ if not isinstance (marker , Marker ):
204
+ return value , False
205
+
206
+ now = time .time ()
207
+ if herd_timeout < now :
208
+ x = now - herd_timeout
209
+ return unpacked , _is_expired (x , self ._herd_timeout )
210
+
211
+ return unpacked , False
212
+
213
+
214
+ class HerdClient (BaseHerdClient , SyncHerdMethods ):
215
+ pass
0 commit comments