X7ROOT File Manager
Current Path:
/opt/hc_python/lib/python3.12/site-packages/sentry_sdk/integrations
opt
/
hc_python
/
lib
/
python3.12
/
site-packages
/
sentry_sdk
/
integrations
/
??
..
??
__init__.py
(12.44 KB)
??
__pycache__
??
_asgi_common.py
(3.11 KB)
??
_wsgi_common.py
(7.38 KB)
??
aiohttp.py
(12.7 KB)
??
anthropic.py
(14.17 KB)
??
argv.py
(911 B)
??
ariadne.py
(5.7 KB)
??
arq.py
(7.7 KB)
??
asgi.py
(12.5 KB)
??
asyncio.py
(4.5 KB)
??
asyncpg.py
(6.37 KB)
??
atexit.py
(1.61 KB)
??
aws_lambda.py
(17.65 KB)
??
beam.py
(5.06 KB)
??
boto3.py
(4.31 KB)
??
bottle.py
(6.46 KB)
??
celery
??
chalice.py
(4.59 KB)
??
clickhouse_driver.py
(5.96 KB)
??
cloud_resource_context.py
(7.6 KB)
??
cohere.py
(9.18 KB)
??
dedupe.py
(1.93 KB)
??
django
??
dramatiq.py
(7.28 KB)
??
excepthook.py
(2.35 KB)
??
executing.py
(1.95 KB)
??
falcon.py
(9.28 KB)
??
fastapi.py
(4.48 KB)
??
flask.py
(8.54 KB)
??
gcp.py
(8.26 KB)
??
gnu_backtrace.py
(2.75 KB)
??
google_genai
??
gql.py
(4.69 KB)
??
graphene.py
(4.92 KB)
??
grpc
??
httpx.py
(5.94 KB)
??
huey.py
(5.32 KB)
??
huggingface_hub.py
(14.6 KB)
??
langchain.py
(39.02 KB)
??
langgraph.py
(11.56 KB)
??
launchdarkly.py
(1.89 KB)
??
litellm.py
(9.99 KB)
??
litestar.py
(11.55 KB)
??
logging.py
(13.57 KB)
??
loguru.py
(6.38 KB)
??
mcp.py
(19.58 KB)
??
modules.py
(820 B)
??
openai.py
(24.54 KB)
??
openai_agents
??
openfeature.py
(1.1 KB)
??
opentelemetry
??
otlp.py
(3.06 KB)
??
pure_eval.py
(4.5 KB)
??
pydantic_ai
??
pymongo.py
(6.23 KB)
??
pyramid.py
(7.19 KB)
??
quart.py
(7.24 KB)
??
ray.py
(5.2 KB)
??
redis
??
rq.py
(5.18 KB)
??
rust_tracing.py
(8.87 KB)
??
sanic.py
(12.66 KB)
??
serverless.py
(1.76 KB)
??
socket.py
(3.09 KB)
??
spark
??
sqlalchemy.py
(4.24 KB)
??
starlette.py
(25.62 KB)
??
starlite.py
(10.31 KB)
??
statsig.py
(1.2 KB)
??
stdlib.py
(8.76 KB)
??
strawberry.py
(13.82 KB)
??
sys_exit.py
(2.43 KB)
??
threading.py
(6.94 KB)
??
tornado.py
(7.04 KB)
??
trytond.py
(1.61 KB)
??
typer.py
(1.77 KB)
??
unleash.py
(1.03 KB)
??
unraisablehook.py
(1.71 KB)
??
wsgi.py
(10.56 KB)
Editing: ray.py
import inspect import functools import sys import sentry_sdk from sentry_sdk.consts import OP, SPANSTATUS from sentry_sdk.integrations import _check_minimum_version, DidNotEnable, Integration from sentry_sdk.tracing import TransactionSource from sentry_sdk.utils import ( event_from_exception, logger, package_version, qualname_from_function, reraise, ) try: import ray # type: ignore[import-not-found] except ImportError: raise DidNotEnable("Ray not installed.") from typing import TYPE_CHECKING if TYPE_CHECKING: from collections.abc import Callable from typing import Any, Optional from sentry_sdk.utils import ExcInfo def _check_sentry_initialized(): # type: () -> None if sentry_sdk.get_client().is_active(): return logger.debug( "[Tracing] Sentry not initialized in ray cluster worker, performance data will be discarded." ) def _patch_ray_remote(): # type: () -> None old_remote = ray.remote @functools.wraps(old_remote) def new_remote(f=None, *args, **kwargs): # type: (Optional[Callable[..., Any]], *Any, **Any) -> Callable[..., Any] if inspect.isclass(f): # Ray Actors # (https://docs.ray.io/en/latest/ray-core/actors.html) # are not supported # (Only Ray Tasks are supported) return old_remote(f, *args, **kwargs) def wrapper(user_f): # type: (Callable[..., Any]) -> Any @functools.wraps(user_f) def new_func(*f_args, _sentry_tracing=None, **f_kwargs): # type: (Any, Optional[dict[str, Any]], Any) -> Any _check_sentry_initialized() transaction = sentry_sdk.continue_trace( _sentry_tracing or {}, op=OP.QUEUE_TASK_RAY, name=qualname_from_function(user_f), origin=RayIntegration.origin, source=TransactionSource.TASK, ) with sentry_sdk.start_transaction(transaction) as transaction: try: result = user_f(*f_args, **f_kwargs) transaction.set_status(SPANSTATUS.OK) except Exception: transaction.set_status(SPANSTATUS.INTERNAL_ERROR) exc_info = sys.exc_info() _capture_exception(exc_info) reraise(*exc_info) return result # Patching new_func signature to add the _sentry_tracing parameter to it # Ray later inspects the signature and finds the unexpected parameter otherwise signature = inspect.signature(new_func) params = list(signature.parameters.values()) params.append( inspect.Parameter( "_sentry_tracing", kind=inspect.Parameter.KEYWORD_ONLY, default=None, ) ) new_func.__signature__ = signature.replace(parameters=params) # type: ignore[attr-defined] if f: rv = old_remote(new_func) else: rv = old_remote(*args, **kwargs)(new_func) old_remote_method = rv.remote def _remote_method_with_header_propagation(*args, **kwargs): # type: (*Any, **Any) -> Any """ Ray Client """ with sentry_sdk.start_span( op=OP.QUEUE_SUBMIT_RAY, name=qualname_from_function(user_f), origin=RayIntegration.origin, ) as span: tracing = { k: v for k, v in sentry_sdk.get_current_scope().iter_trace_propagation_headers() } try: result = old_remote_method( *args, **kwargs, _sentry_tracing=tracing ) span.set_status(SPANSTATUS.OK) except Exception: span.set_status(SPANSTATUS.INTERNAL_ERROR) exc_info = sys.exc_info() _capture_exception(exc_info) reraise(*exc_info) return result rv.remote = _remote_method_with_header_propagation return rv if f is not None: return wrapper(f) else: return wrapper ray.remote = new_remote def _capture_exception(exc_info, **kwargs): # type: (ExcInfo, **Any) -> None client = sentry_sdk.get_client() event, hint = event_from_exception( exc_info, client_options=client.options, mechanism={ "handled": False, "type": RayIntegration.identifier, }, ) sentry_sdk.capture_event(event, hint=hint) class RayIntegration(Integration): identifier = "ray" origin = f"auto.queue.{identifier}" @staticmethod def setup_once(): # type: () -> None version = package_version("ray") _check_minimum_version(RayIntegration, version) _patch_ray_remote()
Upload File
Create Folder