| Viewing file:  asyncio.py (1.91 KB)      -rw-r--r-- Select action/file-type:
 
  (+) |  (+) |  (+) | Code (+) | Session (+) |  (+) | SDB (+) |  (+) |  (+) |  (+) |  (+) |  (+) | 
 
from __future__ import absolute_import
 from sentry_sdk import Hub
 from sentry_sdk.consts import OP
 from sentry_sdk.utils import capture_internal_exceptions
 from sentry_sdk.integrations.redis import (
 RedisIntegration,
 _get_redis_command_args,
 _get_span_description,
 _set_client_data,
 _set_pipeline_data,
 )
 
 
 from sentry_sdk._types import MYPY
 
 if MYPY:
 from typing import Any
 
 
 def patch_redis_async_pipeline(pipeline_cls):
 # type: (Any) -> None
 old_execute = pipeline_cls.execute
 
 async def _sentry_execute(self, *args, **kwargs):
 # type: (Any, *Any, **Any) -> Any
 hub = Hub.current
 
 if hub.get_integration(RedisIntegration) is None:
 return await old_execute(self, *args, **kwargs)
 
 with hub.start_span(
 op=OP.DB_REDIS, description="redis.pipeline.execute"
 ) as span:
 with capture_internal_exceptions():
 _set_pipeline_data(
 span,
 False,
 _get_redis_command_args,
 self.is_transaction,
 self.command_stack,
 )
 
 return await old_execute(self, *args, **kwargs)
 
 pipeline_cls.execute = _sentry_execute
 
 
 def patch_redis_async_client(cls):
 # type: (Any) -> None
 old_execute_command = cls.execute_command
 
 async def _sentry_execute_command(self, name, *args, **kwargs):
 # type: (Any, str, *Any, **Any) -> Any
 hub = Hub.current
 
 if hub.get_integration(RedisIntegration) is None:
 return await old_execute_command(self, name, *args, **kwargs)
 
 description = _get_span_description(name, *args)
 
 with hub.start_span(op=OP.DB_REDIS, description=description) as span:
 _set_client_data(span, False, name, *args)
 
 return await old_execute_command(self, name, *args, **kwargs)
 
 cls.execute_command = _sentry_execute_command
 
 |