gRPC OpenTracing Interceptors

1.1.4 · maintenance · verified Fri Apr 17

grpcio-opentracing provides Python OpenTracing Extensions for gRPC, enabling distributed tracing by offering gRPC server and client interceptors. Its current version is 1.1.4. The library is part of the `grpc-ecosystem` but has not seen active development since 2019, reflecting the OpenTracing standard's status as largely superseded by OpenTelemetry.

Common errors

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to initialize `OpenTracingServerInterceptor` and `OpenTracingClientInterceptor`. It uses a `MockTracer` for simplicity; in a real application, you would configure a concrete tracer (e.g., Jaeger, Zipkin) and ensure it's made available to the interceptors, either globally or explicitly.

import grpc
from grpc_opentracing.server_interceptor import OpenTracingServerInterceptor
from grpc_opentracing.client_interceptor import OpenTracingClientInterceptor
import opentracing
from opentracing.mocktracer import MockTracer # For demonstration

# 1. Initialize an OpenTracing-compliant tracer (e.g., Jaeger, MockTracer)
mock_tracer = MockTracer()
# 2. Set the global tracer (optional, but common for simplicity)
opentracing.set_global_tracer(mock_tracer)

# 3. Create a server interceptor
server_interceptor = OpenTracingServerInterceptor(tracer=mock_tracer)
# To apply: server = grpc.server(futures.ThreadPoolExecutor(max_workers=10), interceptors=[server_interceptor])

# 4. Create a client interceptor
client_interceptor = OpenTracingClientInterceptor(tracer=mock_tracer)
# To apply: channel = grpc.intercept_channel(grpc.insecure_channel('localhost:50051'), client_interceptor)

print("OpenTracing interceptors created successfully.")
print("Ensure a tracer is configured, either globally or passed explicitly to the interceptor.")

view raw JSON →