Adds an unique identifiert to fastapi requests
Project description
sag_py_fastapi_request_id
This library provides a way to identify all log entries that belong to a single request.
What it does
- Provides a middleware to generate a random request id for every request
- Contains a logging filter that adds the request id as field to every log entry
How to use
Installation
pip install sag-py-fastapi-request-id
Add the middleware
Add this middleware so that the request ids are generated:
from sag_py_fastapi_request_id.request_context_middleware import RequestContextMiddleware
from fastapi import FastAPI
app = FastAPI(...)
app.add_middleware(RequestContextMiddleware)
Get the request id
The request id can be accessed over the context
from sag_py_fastapi_request_id.request_context import get_request_id as get_request_id_from_context
request_id = get_request_id_from_context()
This works in async calls but not in sub threads (without additional changes).
See:
- https://docs.python.org/3/library/contextvars.html
- https://kobybass.medium.com/python-contextvars-and-multithreading-faa33dbe953d
Add request id field to logging
It is possible to log the request id by adding a filter.
import logging
from sag_py_fastapi_request_id.request_context_logging_filter import RequestContextLoggingFilter
console_handler = logging.StreamHandler(sys.stdout)
console_handler.addFilter(RequestContextLoggingFilter())
The filter adds the field request_id if it has a value in the context.
How to start developing
With vscode
Just install vscode with dev containers extension. All required extensions and configurations are prepared automatically.
With pycharm
- Install latest pycharm
- Install pycharm plugin Mypy
- Configure the python interpreter/venv
- pip install requirements-dev.txt
- Ctl+Alt+S => Click Tools => Actions on save => Reformat code
- Restart pycharm
How to publish
- Update the version in setup.py and commit your change
- Create a tag with the same version number
- Let github do the rest
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file sag_py_fastapi_request_id-1.0.5.tar.gz.
File metadata
- Download URL: sag_py_fastapi_request_id-1.0.5.tar.gz
- Upload date:
- Size: 5.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
771b13e577202f0c8ac16115e32d40bd65d37f7e226a0094074deac283b7563c
|
|
| MD5 |
d9472c24b4be91e464e757304ceede72
|
|
| BLAKE2b-256 |
4ca35f1cdf4744e0f124d6926317c39aad80518d3ac09ce4fcf2b03f0149c6bc
|
File details
Details for the file sag_py_fastapi_request_id-1.0.5-py3-none-any.whl.
File metadata
- Download URL: sag_py_fastapi_request_id-1.0.5-py3-none-any.whl
- Upload date:
- Size: 5.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7bb25e68f696e986f6cda7b1969decad99f629347f899c1f33103950be2d5dd
|
|
| MD5 |
3f70175f6b28437297b166c8c8279bec
|
|
| BLAKE2b-256 |
e6b5e902860e6c2f86b054531440d6f2dd44317528c9091896583dda8b519854
|