opt
/
hc_python
/
lib
/
python3.12
/
site-packages
/
sentry_sdk
/
integrations
/
redis
/
Go to Home Directory
+
Upload
Create File
root@0UT1S:~$
Execute
By Order of Mr.0UT1S
[DIR] ..
N/A
[DIR] __pycache__
N/A
[DIR] modules
N/A
__init__.py
1.30 KB
Rename
Delete
_async_common.py
3.70 KB
Rename
Delete
_sync_common.py
3.50 KB
Rename
Delete
consts.py
480 bytes
Rename
Delete
rb.py
806 bytes
Rename
Delete
redis.py
1.66 KB
Rename
Delete
redis_cluster.py
3.25 KB
Rename
Delete
redis_py_cluster_legacy.py
1.55 KB
Rename
Delete
utils.py
3.86 KB
Rename
Delete
""" Instrumentation for RedisCluster This is part of the main redis-py client. https://github.com/redis/redis-py/blob/master/redis/cluster.py """ from sentry_sdk.integrations.redis._sync_common import ( patch_redis_client, patch_redis_pipeline, ) from sentry_sdk.integrations.redis.modules.queries import _set_db_data_on_span from sentry_sdk.integrations.redis.utils import _parse_rediscluster_command from sentry_sdk.utils import capture_internal_exceptions from typing import TYPE_CHECKING if TYPE_CHECKING: from typing import Any from redis import RedisCluster from redis.asyncio.cluster import ( RedisCluster as AsyncRedisCluster, ClusterPipeline as AsyncClusterPipeline, ) from sentry_sdk.tracing import Span def _set_async_cluster_db_data(span, async_redis_cluster_instance): # type: (Span, AsyncRedisCluster[Any]) -> None default_node = async_redis_cluster_instance.get_default_node() if default_node is not None and default_node.connection_kwargs is not None: _set_db_data_on_span(span, default_node.connection_kwargs) def _set_async_cluster_pipeline_db_data(span, async_redis_cluster_pipeline_instance): # type: (Span, AsyncClusterPipeline[Any]) -> None with capture_internal_exceptions(): _set_async_cluster_db_data( span, # the AsyncClusterPipeline has always had a `_client` attr but it is private so potentially problematic and mypy # does not recognize it - see https://github.com/redis/redis-py/blame/v5.0.0/redis/asyncio/cluster.py#L1386 async_redis_cluster_pipeline_instance._client, # type: ignore[attr-defined] ) def _set_cluster_db_data(span, redis_cluster_instance): # type: (Span, RedisCluster[Any]) -> None default_node = redis_cluster_instance.get_default_node() if default_node is not None: connection_params = { "host": default_node.host, "port": default_node.port, } _set_db_data_on_span(span, connection_params) def _patch_redis_cluster(): # type: () -> None """Patches the cluster module on redis SDK (as opposed to rediscluster library)""" try: from redis import RedisCluster, cluster except ImportError: pass else: patch_redis_client( RedisCluster, is_cluster=True, set_db_data_fn=_set_cluster_db_data, ) patch_redis_pipeline( cluster.ClusterPipeline, is_cluster=True, get_command_args_fn=_parse_rediscluster_command, set_db_data_fn=_set_cluster_db_data, ) try: from redis.asyncio import cluster as async_cluster except ImportError: pass else: from sentry_sdk.integrations.redis._async_common import ( patch_redis_async_client, patch_redis_async_pipeline, ) patch_redis_async_client( async_cluster.RedisCluster, is_cluster=True, set_db_data_fn=_set_async_cluster_db_data, ) patch_redis_async_pipeline( async_cluster.ClusterPipeline, is_cluster=True, get_command_args_fn=_parse_rediscluster_command, set_db_data_fn=_set_async_cluster_pipeline_db_data, )
Save