1
1
from __future__ import absolute_import
2
2
3
3
from sentry_sdk import Hub
4
- from sentry_sdk .utils import capture_internal_exceptions
4
+ from sentry_sdk .utils import capture_internal_exceptions , logger
5
5
from sentry_sdk .integrations import Integration
6
6
7
7
from sentry_sdk ._types import MYPY
15
15
_MULTI_KEY_COMMANDS = frozenset (["del" , "touch" , "unlink" ])
16
16
17
17
18
+ def _patch_rediscluster ():
19
+ # type: () -> None
20
+ try :
21
+ import rediscluster
22
+ except ImportError :
23
+ return
24
+
25
+ patch_redis_client (rediscluster .RedisCluster )
26
+
27
+ # up to v1.3.6, __version__ attribute is a tuple
28
+ # from v2.0.0, __version__ is a string and VERSION a tuple
29
+ version = getattr (rediscluster , "VERSION" , rediscluster .__version__ )
30
+
31
+ # StrictRedisCluster was introduced in v0.2.0 and removed in v2.0.0
32
+ # https://github.com/Grokzen/redis-py-cluster/blob/master/docs/release-notes.rst
33
+ if (0 , 2 , 0 ) < version < (2 , 0 , 0 ):
34
+ patch_redis_client (rediscluster .StrictRedisCluster )
35
+
36
+
18
37
class RedisIntegration (Integration ):
19
38
identifier = "redis"
20
39
@@ -34,6 +53,11 @@ def setup_once():
34
53
patch_redis_client (rb .clients .MappingClient )
35
54
patch_redis_client (rb .clients .RoutingClient )
36
55
56
+ try :
57
+ _patch_rediscluster ()
58
+ except Exception :
59
+ logger .exception ("Error occured while patching `rediscluster` library" )
60
+
37
61
38
62
def patch_redis_client (cls ):
39
63
# type: (Any) -> None
0 commit comments