Async Transaction Middleware for FastAPI/Starlette
Project description
transaction-middleware
Async Transaction Middleware for FastAPI/Starlette.
Installation
Using pip:
pip install transaction-middleware
Using poetry
poetry add transaction-middleware
How to use it
Transaction Middleware follows the middleware protocol and, therefore, should be added as a middleware to your FastApi or Starlette application.
The steps, using FastAPI:
from fastapi import FastAPI, Depends
from starlette.requests import Request
from starlette.responses import Response
from transaction_middleware import (
TransactionMiddleware,
get_transaction_id,
transaction_id_required,
)
app: FastAPI = FastAPI()
app.add_middleware(TransactionMiddleware)
@app.get(
"/items/{id}",
tags=["Item"],
)
async def read_items(
request: Request,
response: Response,
id: str,
transaction_id: str = Depends(get_transaction_id()),
):
return {
"id": id,
"transaction_id": transaction_id if transaction_id else "No transaction ID",
}
Then set the environment variables (or your .env file)
TRANSACTION_MIDDLEWARE_LOG_LEVEL=DEBUG
TRANSACTION_MIDDLEWARE_HEADER=X-Transaction-ID
Launch the server.
Call the method you want to test, and, optionally, set the transaction Id on the headers.
curl -X GET http://localhost:8000/items/1234 -H "X-Transaction-ID: 2fyJr1FbRj603pH4rweEfEzQ"
Middleware configuration
The middleware configuration is done by environment variables (or using and .env file if your project uses python-dotenv).
The main variables are shown in the table below:
Name | Description | Values | Default |
---|---|---|---|
TRANSACTION_MIDDLEWARE_LOG_LEVEL | Log level for the application | DEBUG, INFO, WARNING, ERROR, CRITICAL | INFO |
TRANSACTION_MIDDLEWARE_LOG_FORMAT | Log format | See python logger documentation | %(log_color)s%(levelname)-9s%(reset)s %(asctime)s %(name)s %(message)s |
TRANSACTION_MIDDLEWARE_HEADER | Name for the header | Any String | X-Transaction-ID |
Project details
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
File details
Details for the file transaction_middleware-0.1.7.tar.gz
.
File metadata
- Download URL: transaction_middleware-0.1.7.tar.gz
- Upload date:
- Size: 4.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.12.3 Linux/6.5.0-1018-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | c488b53738e97a0f84af53bf05a0d8886c69408cda26b1d30809c9a6008e7525 |
|
MD5 | f062def5aa0e06ce51f070d22076c072 |
|
BLAKE2b-256 | 7af13a37b7248fe0fcf6c82db50edf34b724dbed0676581acde9da777fb5ca11 |
File details
Details for the file transaction_middleware-0.1.7-py3-none-any.whl
.
File metadata
- Download URL: transaction_middleware-0.1.7-py3-none-any.whl
- Upload date:
- Size: 5.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.7.1 CPython/3.12.3 Linux/6.5.0-1018-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5425ff21f8d0c169c97742a43388120b5b9f1b7fabf5767d48c591514f84eb88 |
|
MD5 | 068772bc36e5e51886e681d6999149f5 |
|
BLAKE2b-256 | a95443a822372188b52c4c5b2f45c465c9a7beda967eeb0cb1e9f844b7e84d2c |