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.51 KB)
??
__pycache__
??
_asgi_common.py
(4 KB)
??
_wsgi_common.py
(7.28 KB)
??
aiohttp.py
(19.28 KB)
??
aiomysql.py
(9.09 KB)
??
anthropic.py
(39 KB)
??
argv.py
(876 B)
??
ariadne.py
(5.7 KB)
??
arq.py
(9.23 KB)
??
asgi.py
(20.06 KB)
??
asyncio.py
(9.28 KB)
??
asyncpg.py
(9.68 KB)
??
atexit.py
(1.51 KB)
??
aws_lambda.py
(17.41 KB)
??
beam.py
(4.91 KB)
??
boto3.py
(6.2 KB)
??
bottle.py
(7.21 KB)
??
celery
??
chalice.py
(4.51 KB)
??
clickhouse_driver.py
(5.85 KB)
??
cloud_resource_context.py
(7.49 KB)
??
cohere.py
(10.44 KB)
??
dedupe.py
(1.86 KB)
??
django
??
dramatiq.py
(8.02 KB)
??
excepthook.py
(2.25 KB)
??
executing.py
(1.93 KB)
??
falcon.py
(9.04 KB)
??
fastapi.py
(5.28 KB)
??
flask.py
(8.27 KB)
??
gcp.py
(10.57 KB)
??
gnu_backtrace.py
(2.72 KB)
??
google_genai
??
gql.py
(4.93 KB)
??
graphene.py
(5.71 KB)
??
grpc
??
httpx.py
(9.79 KB)
??
httpx2.py
(9.8 KB)
??
huey.py
(8.19 KB)
??
huggingface_hub.py
(15.28 KB)
??
langchain.py
(48.31 KB)
??
langgraph.py
(18.13 KB)
??
launchdarkly.py
(1.87 KB)
??
litellm.py
(13.03 KB)
??
litestar.py
(11.46 KB)
??
logging.py
(15.69 KB)
??
loguru.py
(6.35 KB)
??
mcp.py
(23.12 KB)
??
modules.py
(787 B)
??
openai.py
(53.38 KB)
??
openai_agents
??
openfeature.py
(1.08 KB)
??
opentelemetry
??
otlp.py
(7.99 KB)
??
pure_eval.py
(4.41 KB)
??
pydantic_ai
??
pymongo.py
(8.21 KB)
??
pyramid.py
(7.42 KB)
??
pyreqwest.py
(6.82 KB)
??
quart.py
(7.32 KB)
??
ray.py
(5.75 KB)
??
redis
??
rq.py
(7.81 KB)
??
rust_tracing.py
(9.44 KB)
??
sanic.py
(15.25 KB)
??
serverless.py
(1.58 KB)
??
socket.py
(5.02 KB)
??
spark
??
sqlalchemy.py
(5.24 KB)
??
starlette.py
(27.93 KB)
??
starlite.py
(11.04 KB)
??
statsig.py
(1.19 KB)
??
stdlib.py
(14.01 KB)
??
strawberry.py
(17.39 KB)
??
sys_exit.py
(2.35 KB)
??
threading.py
(6.88 KB)
??
tornado.py
(10.79 KB)
??
trytond.py
(1.67 KB)
??
typer.py
(1.72 KB)
??
unleash.py
(1.02 KB)
??
unraisablehook.py
(1.65 KB)
??
wsgi.py
(15.03 KB)
Editing: ray.py
import functools import inspect import sys import sentry_sdk from sentry_sdk.consts import OP, SPANSTATUS from sentry_sdk.integrations import DidNotEnable, Integration, _check_minimum_version 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] from ray import remote 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() -> 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 _insert_sentry_tracing_in_signature(func: "Callable[..., Any]") -> None: # 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(func) params = list(signature.parameters.values()) sentry_tracing_param = inspect.Parameter( "_sentry_tracing", kind=inspect.Parameter.KEYWORD_ONLY, default=None, ) # Keyword only arguments are penultimate if function has variadic keyword arguments if params and params[-1].kind is inspect.Parameter.VAR_KEYWORD: params.insert(-1, sentry_tracing_param) else: params.append(sentry_tracing_param) func.__signature__ = signature.replace(parameters=params) # type: ignore[attr-defined] def _patch_ray_remote() -> None: old_remote = remote @functools.wraps(old_remote) def new_remote( f: "Optional[Callable[..., Any]]" = None, *args: "Any", **kwargs: "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: "Callable[..., Any]") -> "Any": if inspect.isclass(user_f): # Ray Actors # (https://docs.ray.io/en/latest/ray-core/actors.html) # are not supported # (Only Ray Tasks are supported) return old_remote(*args, **kwargs)(user_f) @functools.wraps(user_f) def new_func( *f_args: "Any", _sentry_tracing: "Optional[dict[str, Any]]" = None, **f_kwargs: "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 _insert_sentry_tracing_in_signature(new_func) 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: "Any", **kwargs: "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: "ExcInfo", **kwargs: "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() -> None: version = package_version("ray") _check_minimum_version(RayIntegration, version) _patch_ray_remote()
Upload File
Create Folder