Source code for fastapi_contrib.tracing.utils
import warnings
from jaeger_client import Config
from opentracing.scope_managers.asyncio import AsyncioScopeManager
from fastapi_contrib.conf import settings
[docs]def setup_opentracing(app):
"""
Helper function to setup opentracing with Jaeger client during setup.
Use during app startup as follows:
.. code-block:: python
app = FastAPI()
@app.on_event('startup')
async def startup():
setup_opentracing(app)
:param app: app object, instance of FastAPI
:return: None
"""
config = Config(
config={
"local_agent": {
"reporting_host": settings.jaeger_host,
"reporting_port": settings.jaeger_port
},
"sampler": {
"type": settings.jaeger_sampler_type,
"param": settings.jaeger_sampler_rate,
},
"trace_id_header": settings.trace_id_header
},
service_name=settings.service_name,
validate=True,
scope_manager=AsyncioScopeManager()
)
warnings.warn(
"""
tracer object in request.app will be removed in favor of saving it in
request.app.state in the next minor version 0.3.0
""",
FutureWarning
)
# this call also sets opentracing.tracer
app.state.tracer = config.initialize_tracer()
app.tracer = app.state.tracer