PHP 8.0.30
Preview: httpx.py Size: 2.55 KB
/opt/alt/python37/lib/python3.7/site-packages/sentry_sdk/integrations/httpx.py

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

Directory Contents

Dirs: 3 × Files: 34

Name Size Perms Modified Actions
django DIR
- drwxr-xr-x 2023-12-06 03:19:43
Edit Download
spark DIR
- drwxr-xr-x 2023-12-06 03:19:43
Edit Download
- drwxr-xr-x 2023-12-06 03:19:43
Edit Download
7.77 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
945 B lrw-r--r-- 2021-07-27 14:04:04
Edit Download
8.26 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
1.79 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
14.99 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
5.53 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
4.05 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
6.06 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
9.31 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
4.50 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
1.14 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
2.14 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
1.98 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
6.64 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
7.30 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
7.84 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
2.84 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
2.55 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
7.54 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
1.36 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
4.41 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
6.91 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
3.00 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
4.84 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
8.44 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
1.92 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
2.87 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
7.25 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
2.79 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
7.02 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
1.69 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
10.89 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
4.65 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download
6.36 KB lrw-r--r-- 2021-07-27 14:04:04
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).