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
Close
Hashes for transaction_middleware-0.1.7.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | c488b53738e97a0f84af53bf05a0d8886c69408cda26b1d30809c9a6008e7525 |
|
MD5 | f062def5aa0e06ce51f070d22076c072 |
|
BLAKE2b-256 | 7af13a37b7248fe0fcf6c82db50edf34b724dbed0676581acde9da777fb5ca11 |
Close
Hashes for transaction_middleware-0.1.7-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 5425ff21f8d0c169c97742a43388120b5b9f1b7fabf5767d48c591514f84eb88 |
|
MD5 | 068772bc36e5e51886e681d6999149f5 |
|
BLAKE2b-256 | a95443a822372188b52c4c5b2f45c465c9a7beda967eeb0cb1e9f844b7e84d2c |