PATH:
opt
/
hc_python
/
lib
/
python3.12
/
site-packages
/
sentry_sdk
/
integrations
import socket import sentry_sdk from sentry_sdk._types import MYPY from sentry_sdk.consts import OP from sentry_sdk.integrations import Integration if MYPY: from socket import AddressFamily, SocketKind from typing import Tuple, Optional, Union, List __all__ = ["SocketIntegration"] class SocketIntegration(Integration): identifier = "socket" origin = f"auto.socket.{identifier}" @staticmethod def setup_once(): # type: () -> None """ patches two of the most used functions of socket: create_connection and getaddrinfo(dns resolver) """ _patch_create_connection() _patch_getaddrinfo() def _get_span_description(host, port): # type: (Union[bytes, str, None], Union[bytes, str, int, None]) -> str try: host = host.decode() # type: ignore except (UnicodeDecodeError, AttributeError): pass try: port = port.decode() # type: ignore except (UnicodeDecodeError, AttributeError): pass description = "%s:%s" % (host, port) # type: ignore return description def _patch_create_connection(): # type: () -> None real_create_connection = socket.create_connection def create_connection( address, timeout=socket._GLOBAL_DEFAULT_TIMEOUT, # type: ignore source_address=None, ): # type: (Tuple[Optional[str], int], Optional[float], Optional[Tuple[Union[bytearray, bytes, str], int]])-> socket.socket integration = sentry_sdk.get_client().get_integration(SocketIntegration) if integration is None: return real_create_connection(address, timeout, source_address) with sentry_sdk.start_span( op=OP.SOCKET_CONNECTION, name=_get_span_description(address[0], address[1]), origin=SocketIntegration.origin, ) as span: span.set_data("address", address) span.set_data("timeout", timeout) span.set_data("source_address", source_address) return real_create_connection( address=address, timeout=timeout, source_address=source_address ) socket.create_connection = create_connection # type: ignore def _patch_getaddrinfo(): # type: () -> None real_getaddrinfo = socket.getaddrinfo def getaddrinfo(host, port, family=0, type=0, proto=0, flags=0): # type: (Union[bytes, str, None], Union[bytes, str, int, None], int, int, int, int) -> List[Tuple[AddressFamily, SocketKind, int, str, Union[Tuple[str, int], Tuple[str, int, int, int], Tuple[int, bytes]]]] integration = sentry_sdk.get_client().get_integration(SocketIntegration) if integration is None: return real_getaddrinfo(host, port, family, type, proto, flags) with sentry_sdk.start_span( op=OP.SOCKET_DNS, name=_get_span_description(host, port), origin=SocketIntegration.origin, ) as span: span.set_data("host", host) span.set_data("port", port) return real_getaddrinfo(host, port, family, type, proto, flags) socket.getaddrinfo = getaddrinfo
[-] gql.py
[edit]
[-] loguru.py
[edit]
[-] gnu_backtrace.py
[edit]
[-] sys_exit.py
[edit]
[-] wsgi.py
[edit]
[-] modules.py
[edit]
[-] aiohttp.py
[edit]
[-] serverless.py
[edit]
[-] quart.py
[edit]
[+]
__pycache__
[-] bottle.py
[edit]
[-] typer.py
[edit]
[-] tornado.py
[edit]
[-] __init__.py
[edit]
[-] launchdarkly.py
[edit]
[-] mcp.py
[edit]
[-] openfeature.py
[edit]
[-] pyramid.py
[edit]
[-] dedupe.py
[edit]
[-] socket.py
[edit]
[-] _asgi_common.py
[edit]
[-] arq.py
[edit]
[-] clickhouse_driver.py
[edit]
[-] sanic.py
[edit]
[-] unraisablehook.py
[edit]
[-] langgraph.py
[edit]
[-] otlp.py
[edit]
[-] aws_lambda.py
[edit]
[-] beam.py
[edit]
[-] atexit.py
[edit]
[-] asyncio.py
[edit]
[+]
openai_agents
[-] ariadne.py
[edit]
[+]
redis
[-] rq.py
[edit]
[-] dramatiq.py
[edit]
[-] starlette.py
[edit]
[-] _wsgi_common.py
[edit]
[-] cohere.py
[edit]
[-] huey.py
[edit]
[-] executing.py
[edit]
[+]
celery
[-] asyncpg.py
[edit]
[-] pymongo.py
[edit]
[-] argv.py
[edit]
[-] anthropic.py
[edit]
[-] httpx.py
[edit]
[-] chalice.py
[edit]
[-] ray.py
[edit]
[+]
opentelemetry
[-] litellm.py
[edit]
[-] huggingface_hub.py
[edit]
[-] stdlib.py
[edit]
[+]
google_genai
[+]
..
[-] threading.py
[edit]
[-] openai.py
[edit]
[+]
pydantic_ai
[-] falcon.py
[edit]
[+]
spark
[-] unleash.py
[edit]
[-] langchain.py
[edit]
[+]
django
[-] litestar.py
[edit]
[-] gcp.py
[edit]
[-] logging.py
[edit]
[-] excepthook.py
[edit]
[+]
grpc
[-] statsig.py
[edit]
[-] cloud_resource_context.py
[edit]
[-] sqlalchemy.py
[edit]
[-] trytond.py
[edit]
[-] fastapi.py
[edit]
[-] boto3.py
[edit]
[-] flask.py
[edit]
[-] asgi.py
[edit]
[-] rust_tracing.py
[edit]
[-] graphene.py
[edit]
[-] strawberry.py
[edit]
[-] pure_eval.py
[edit]
[-] starlite.py
[edit]