Skip to main content

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

Metadata

Release files for transaction-middleware 0.1.7

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for transaction-middleware 0.1.7
File Size Uploaded
transaction_middleware-0.1.7.tar.gz 4.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for transaction-middleware 0.1.7
File Interpreter ABI Platform
transaction_middleware-0.1.7-py3-none-any.whl Python 3 none any Details

Total release size: 10.2 kB

Release files / transaction_middleware-0.1.7.tar.gz

Download URL transaction_middleware-0.1.7.tar.gz
Size 4.3 kB
Tags Source
SHA-256 checksum
How to use checksums
c488b53738e97a0f84af53bf05a0d8886c69408cda26b1d30809c9a6008e7525
BLAKE2b-256 checksum
How to use checksums
7af13a37b7248fe0fcf6c82db50edf34b724dbed0676581acde9da777fb5ca11
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.12.3 Linux/6.5.0-1018-azure

Release files / transaction_middleware-0.1.7-py3-none-any.whl

Download URL transaction_middleware-0.1.7-py3-none-any.whl
Size 5.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
5425ff21f8d0c169c97742a43388120b5b9f1b7fabf5767d48c591514f84eb88
BLAKE2b-256 checksum
How to use checksums
a95443a822372188b52c4c5b2f45c465c9a7beda967eeb0cb1e9f844b7e84d2c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via poetry/1.7.1 CPython/3.12.3 Linux/6.5.0-1018-azure

Release history Release notifications | RSS feed

This release

0.1.7 This release

2 release files

0.1.6

2 release files

0.1.5

2 release files

0.1.4

2 release files

0.1.3

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page