Middleware for Starlette that allows you to store and access the context data of a request. Can be used with logging so logs automatically use request headers such as x-request-id or x-correlation-id.
Project description
starlette context
Middleware for Starlette that allows you to store and access the context data of a request. Can be used with logging so logs automatically use request headers such as x-request-id or x-correlation-id.
Resources:
Documentation: https://starlette-context.readthedocs.io/
Changelog: https://starlette-context.readthedocs.io/en/latest/changelog.html
Installation
$ pip install starlette-context
Requirements
Should be working fine on 3.7+. Official support starts at 3.8.
Dependencies
starlette
Example
import uvicorn
from starlette.applications import Starlette
from starlette.middleware import Middleware
from starlette.requests import Request
from starlette.responses import JSONResponse
from starlette_context import context, plugins
from starlette_context.middleware import RawContextMiddleware
middleware = [
Middleware(
RawContextMiddleware,
plugins=(
plugins.RequestIdPlugin(),
plugins.CorrelationIdPlugin()
)
)
]
app = Starlette(middleware=middleware)
@app.route("/")
async def index(request: Request):
return JSONResponse(context.data)
uvicorn.run(app, host="0.0.0.0")
In this example the response contains a json with
{
"X-Correlation-ID":"5ca2f0b43115461bad07ccae5976a990",
"X-Request-ID":"21f8d52208ec44948d152dc49a713fdd"
}
Context can be updated and accessed at anytime if it’s created in the middleware.
Sponsorship
A huge thank you to Adverity for sponsoring the development of this OSS library in 2022.
Contribution
See the guide on read the docs.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for starlette_context-0.3.6-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | b14ce373fbb6895a2182a7104b9f63ba20c8db83444005fb9a844dd77ad9895c |
|
MD5 | 06f61a7291e2bf8f8efbf4fb3be9d53e |
|
BLAKE2b-256 | d056a56af8066d9c17696207ee15bad43fd06dafc5917f6e7c7c3899427f6fc3 |