Created
August 14, 2021 06:51
-
-
Save adriangb/425ed1ed327b3bdea49969ce32140fcc to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
from typing import Awaitable, Callable | |
from fastapi import FastAPI, Request, Response | |
from fastapi.exceptions import HTTPException | |
from opentelemetry import trace | |
from opentelemetry.sdk.trace import TracerProvider | |
from opentelemetry.propagate import inject | |
from opentelemetry.instrumentation.fastapi import FastAPIInstrumentor | |
trace.set_tracer_provider(TracerProvider()) | |
app = FastAPI() | |
@app.get("/") | |
async def root(): | |
raise HTTPException(status_code=403) | |
@app.middleware("http") | |
async def inject_opentelemetry_response_headers( | |
request: Request, | |
call_next: Callable[[Request], Awaitable[Response]] | |
) -> Response: | |
response: Response = await call_next(request) | |
inject(response.headers) | |
return response | |
FastAPIInstrumentor.instrument_app(app) | |
if __name__ == "__main__": | |
from fastapi.testclient import TestClient | |
t = TestClient(app) | |
r = t.get("/") | |
print(r.headers) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment