fastapi opentracing middleware works with istio
install:
pip install fastapi-opentracing example:
from fastapi import FastAPI import uvicorn from fastapi_opentracing import get_opentracing_span_headers from fastapi_opentracing.middleware import OpenTracingMiddleware app = FastAPI() app.add_middleware(OpenTracingMiddleware) @app.get("/") async def root(): carrier = await get_opentracing_span_headers() return {'span': carrier} if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000)if your application uses tortoise-orm, you can execute the install_all_patch or specify the client mysql_client.install_patch to patch you SQLClient
example:
from fastapi import FastAPI import uvicorn from fastapi_opentracing import get_opentracing_span_headers from fastapi_opentracing.middleware import OpenTracingMiddleware from fastapi_opentracing.client_hooks.mysql_client import install_patch from fastapi_opentracing.client_hooks import install_all_patch app = FastAPI() app.add_middleware(OpenTracingMiddleware) TORTOISE_ORM = { "connections": {"default": "mysql://root:123456@127.0.0.1:3306/test"}, "apps": { "models": { "models": ["tests.models", "aerich.models"], "default_connection": "default", }, }, } register_tortoise( app, config=TORTOISE_ORM, generate_schemas=True ) install_all_patch() @app.get("/") async def root(): carrier = await get_opentracing_span_headers() return {'span': carrier} if __name__ == "__main__": uvicorn.run(app, host="0.0.0.0", port=8000)Contributing and Developing
To install all dependencies, run:
python3 -m venv venv source venv/bin/activate make bootstrapRunning Tests
make testCheck the style and quality of python code
make lint