OpenTelemetry HTTPX 仪器
项目描述
此库允许跟踪由httpx库发出的HTTP请求。
安装
pip install opentelemetry-instrumentation-httpx
使用
仪器化所有客户端
当使用仪器化工具时,所有客户端将自动跟踪请求。
import httpx
from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor
url = "https://some.url/get"
HTTPXClientInstrumentor().instrument()
with httpx.Client() as client:
response = client.get(url)
async with httpx.AsyncClient() as client:
response = await client.get(url)
仪器化单个客户端
如果您只想仪器化特定客户端实例的请求,您可以使用instrument_client方法。
import httpx
from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor
url = "https://some.url/get"
with httpx.Client(transport=telemetry_transport) as client:
HTTPXClientInstrumentor.instrument_client(client)
response = client.get(url)
async with httpx.AsyncClient(transport=telemetry_transport) as client:
HTTPXClientInstrumentor.instrument_client(client)
response = await client.get(url)
取消仪器化
如果您需要取消仪器化客户端,有两种选项可用。
import httpx
from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor
HTTPXClientInstrumentor().instrument()
client = httpx.Client()
# Uninstrument a specific client
HTTPXClientInstrumentor.uninstrument_client(client)
# Uninstrument all clients
HTTPXClientInstrumentor().uninstrument()
直接使用传输
如果您不想使用仪器化类,您可以直接使用传输类。
import httpx
from opentelemetry.instrumentation.httpx import (
AsyncOpenTelemetryTransport,
SyncOpenTelemetryTransport,
)
url = "https://some.url/get"
transport = httpx.HTTPTransport()
telemetry_transport = SyncOpenTelemetryTransport(transport)
with httpx.Client(transport=telemetry_transport) as client:
response = client.get(url)
transport = httpx.AsyncHTTPTransport()
telemetry_transport = AsyncOpenTelemetryTransport(transport)
async with httpx.AsyncClient(transport=telemetry_transport) as client:
response = await client.get(url)
请求和响应钩子
仪器化支持指定请求和响应钩子。这些是在为请求创建跨度后立即由仪器化回调的函数,以及在处理响应之前完成跨度时调用的函数。
钩子可以按以下方式配置
from opentelemetry.instrumentation.httpx import HTTPXClientInstrumentor
def request_hook(span, request):
# method, url, headers, stream, extensions = request
pass
def response_hook(span, request, response):
# method, url, headers, stream, extensions = request
# status_code, headers, stream, extensions = response
pass
async def async_request_hook(span, request):
# method, url, headers, stream, extensions = request
pass
async def async_response_hook(span, request, response):
# method, url, headers, stream, extensions = request
# status_code, headers, stream, extensions = response
pass
HTTPXClientInstrumentor().instrument(
request_hook=request_hook,
response_hook=response_hook,
async_request_hook=async_request_hook,
async_response_hook=async_response_hook
)
或者如果您直接使用传输类
from opentelemetry.instrumentation.httpx import SyncOpenTelemetryTransport, AsyncOpenTelemetryTransport
def request_hook(span, request):
# method, url, headers, stream, extensions = request
pass
def response_hook(span, request, response):
# method, url, headers, stream, extensions = request
# status_code, headers, stream, extensions = response
pass
async def async_request_hook(span, request):
# method, url, headers, stream, extensions = request
pass
async def async_response_hook(span, request, response):
# method, url, headers, stream, extensions = request
# status_code, headers, stream, extensions = response
pass
transport = httpx.HTTPTransport()
telemetry_transport = SyncOpenTelemetryTransport(
transport,
request_hook=request_hook,
response_hook=response_hook
)
async_transport = httpx.AsyncHTTPTransport()
async_telemetry_transport = AsyncOpenTelemetryTransport(
async_transport,
request_hook=async_request_hook,
response_hook=async_response_hook
)
参考资料
项目详情
关闭
opentelemetry_instrumentation_httpx-0.48b0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ee977479e10398931921fb995ac27ccdeea2e14e392cb27ef012fc549089b60a |
|
MD5 | f601636a0cf61f6175394996a339a942 |
|
BLAKE2b-256 | d3d9c65d818607c16d1b7ea8d2de6111c6cecadf8d2fd38c1885a72733a7c6d3 |
关闭
opentelemetry_instrumentation_httpx-0.48b0-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | d94f9d612c82d09fe22944d1904a30a464c19bea2ba76be656c99a28ad8be8e5 |
|
MD5 | 9b19945ae627cc5d3af41bf14137cca4 |
|
BLAKE2b-256 | c2fef2daa9d6d988c093b8c7b1d35df675761a8ece0b600b035dc04982746c9d |