3
3
from typing import Any , List , Dict
4
4
5
5
from valkey import Valkey
6
- from valkey .exceptions import ConnectionError
7
6
from valkey .typing import EncodableT , KeyT
8
7
9
- from django_valkey .base_client import DEFAULT_TIMEOUT
8
+ from django_valkey .base_client import DEFAULT_TIMEOUT , _main_exceptions
10
9
from django_valkey .client .default import DefaultClient
11
10
from django_valkey .exceptions import ConnectionInterrupted
12
11
from django_valkey .hash_ring import HashRing
@@ -223,10 +222,8 @@ def keys(
223
222
try :
224
223
for connection in self ._server_dict .values ():
225
224
keys .extend (connection .keys (pattern ))
226
- except ConnectionError as e :
227
- # FIXME: technically all clients should be passed as `connection`.
228
- client = self .get_client (key = pattern )
229
- raise ConnectionInterrupted (connection = client ) from e
225
+ except _main_exceptions as e :
226
+ raise ConnectionInterrupted (connection = self ._server_dict .values ()) from e
230
227
231
228
return [self .reverse_key (k .decode ()) for k in keys ]
232
229
@@ -247,13 +244,21 @@ def delete_pattern(
247
244
kwargs ["count" ] = itersize
248
245
249
246
keys = []
250
- for connection in self ._server_dict .values ():
251
- keys .extend (key for key in connection .scan_iter (** kwargs ))
247
+ try :
248
+ for connection in self ._server_dict .values ():
249
+ keys .extend (key for key in connection .scan_iter (** kwargs ))
250
+ except _main_exceptions as e :
251
+ raise ConnectionInterrupted (connection = self ._server_dict .values ()) from e
252
252
253
253
res = 0
254
254
if keys :
255
- for connection in self ._server_dict .values ():
256
- res += connection .delete (* keys )
255
+ try :
256
+ for connection in self ._server_dict .values ():
257
+ res += connection .delete (* keys )
258
+ except _main_exceptions as e :
259
+ raise ConnectionInterrupted (
260
+ connection = self ._server_dict .values ()
261
+ ) from e
257
262
return res
258
263
259
264
def _close (self ) -> None :
@@ -262,4 +267,7 @@ def _close(self) -> None:
262
267
263
268
def clear (self , client = None ) -> None :
264
269
for connection in self ._server_dict .values ():
265
- connection .flushdb ()
270
+ try :
271
+ connection .flushdb ()
272
+ except _main_exceptions as e :
273
+ raise ConnectionInterrupted (connection = connection ) from e
0 commit comments