PATH:
opt
/
alt
/
python37
/
lib
/
python3.7
/
site-packages
/
sentry_sdk
/
integrations
from sentry_sdk import Hub from sentry_sdk.integrations import Integration, DidNotEnable from sentry_sdk._types import MYPY if MYPY: from typing import Any try: from httpx import AsyncClient, Client, Request, Response # type: ignore except ImportError: raise DidNotEnable("httpx is not installed") __all__ = ["HttpxIntegration"] class HttpxIntegration(Integration): identifier = "httpx" @staticmethod def setup_once(): # type: () -> None """ httpx has its own transport layer and can be customized when needed, so patch Client.send and AsyncClient.send to support both synchronous and async interfaces. """ _install_httpx_client() _install_httpx_async_client() def _install_httpx_client(): # type: () -> None real_send = Client.send def send(self, request, **kwargs): # type: (Client, Request, **Any) -> Response hub = Hub.current if hub.get_integration(HttpxIntegration) is None: return real_send(self, request, **kwargs) with hub.start_span( op="http", description="%s %s" % (request.method, request.url) ) as span: span.set_data("method", request.method) span.set_data("url", str(request.url)) for key, value in hub.iter_trace_propagation_headers(): request.headers[key] = value rv = real_send(self, request, **kwargs) span.set_data("status_code", rv.status_code) span.set_http_status(rv.status_code) span.set_data("reason", rv.reason_phrase) return rv Client.send = send def _install_httpx_async_client(): # type: () -> None real_send = AsyncClient.send async def send(self, request, **kwargs): # type: (AsyncClient, Request, **Any) -> Response hub = Hub.current if hub.get_integration(HttpxIntegration) is None: return await real_send(self, request, **kwargs) with hub.start_span( op="http", description="%s %s" % (request.method, request.url) ) as span: span.set_data("method", request.method) span.set_data("url", str(request.url)) for key, value in hub.iter_trace_propagation_headers(): request.headers[key] = value rv = await real_send(self, request, **kwargs) span.set_data("status_code", rv.status_code) span.set_http_status(rv.status_code) span.set_data("reason", rv.reason_phrase) return rv AsyncClient.send = send
[-] dedupe.py
[edit]
[-] aiohttp.py
[edit]
[-] excepthook.py
[edit]
[-] asgi.py
[edit]
[-] pyramid.py
[edit]
[-] trytond.py
[edit]
[+]
spark
[-] rq.py
[edit]
[+]
django
[-] wsgi.py
[edit]
[-] boto3.py
[edit]
[-] atexit.py
[edit]
[-] logging.py
[edit]
[+]
__pycache__
[-] modules.py
[edit]
[-] chalice.py
[edit]
[-] sqlalchemy.py
[edit]
[-] celery.py
[edit]
[-] tornado.py
[edit]
[-] threading.py
[edit]
[-] flask.py
[edit]
[-] bottle.py
[edit]
[-] gnu_backtrace.py
[edit]
[-] redis.py
[edit]
[-] _wsgi_common.py
[edit]
[-] pure_eval.py
[edit]
[-] serverless.py
[edit]
[-] argv.py
[edit]
[-] aws_lambda.py
[edit]
[-] beam.py
[edit]
[-] __init__.py
[edit]
[-] httpx.py
[edit]
[-] gcp.py
[edit]
[+]
..
[-] executing.py
[edit]
[-] sanic.py
[edit]
[-] stdlib.py
[edit]
[-] falcon.py
[edit]