Skip to main content

Middleware for tracking request processing time in Swarmauri applications

Project description

Swarmauri Logo

PyPI - Downloads Hits PyPI - Python Version PyPI - License PyPI - swarmauri_middleware_time


Swarmauri Middleware Time

Middleware for tracking request processing time in Swarmauri applications.

Features

  • Logs when each request starts and when it completes using Python's logging module.
  • Measures the total time spent handling a request and attaches X-Request-Duration and X-Request-Start-Time headers to the response.
  • Raises an HTTPException with status code 500 if an unexpected error occurs while the downstream handler is executing.

Installation

pip

pip install swarmauri_middleware_time

Poetry

poetry add swarmauri_middleware_time

uv

# Install uv if it is not already available
curl -LsSf https://astral.sh/uv/install.sh | sh

# Add the middleware to your project
uv add swarmauri_middleware_time

Usage

The middleware exposes a standard dispatch method that matches FastAPI's middleware interface. Instantiate it once and forward requests through dispatch inside an @app.middleware("http") hook:

from fastapi import FastAPI, Request
from starlette.testclient import TestClient

from swarmauri_middleware_time import TimerMiddleware

app = FastAPI()
timer_middleware = TimerMiddleware()


@app.middleware("http")
async def add_timer(request: Request, call_next):
    return await timer_middleware.dispatch(request, call_next)


@app.get("/ping")
async def ping():
    return {"message": "pong"}


if __name__ == "__main__":
    client = TestClient(app)
    response = client.get("/ping")

    assert response.json() == {"message": "pong"}
    assert "X-Request-Duration" in response.headers
    assert float(response.headers["X-Request-Duration"]) >= 0.0
    assert "X-Request-Start-Time" in response.headers

    print("Duration header:", response.headers["X-Request-Duration"])
    print("Start time header:", response.headers["X-Request-Start-Time"])

Want to help?

If you want to contribute to swarmauri-sdk, read up on our guidelines for contributing that will help you get started.

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

swarmauri_middleware_time-0.8.0.dev33.tar.gz (7.5 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

File details

Details for the file swarmauri_middleware_time-0.8.0.dev33.tar.gz.

File metadata

  • Download URL: swarmauri_middleware_time-0.8.0.dev33.tar.gz
  • Upload date:
  • Size: 7.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for swarmauri_middleware_time-0.8.0.dev33.tar.gz
Algorithm Hash digest
SHA256 4399d873a8d265e9f9124a1bd8847553731a8b8cada1bf7283284caee6fc721f
MD5 0664bb018d4cfdf6034cb68cda7f6196
BLAKE2b-256 97515ae918a4287d5d6d349e665b3d90929fc37fc3d073d4adb50ff81db737b6

See more details on using hashes here.

File details

Details for the file swarmauri_middleware_time-0.8.0.dev33-py3-none-any.whl.

File metadata

  • Download URL: swarmauri_middleware_time-0.8.0.dev33-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.10.3 {"installer":{"name":"uv","version":"0.10.3","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for swarmauri_middleware_time-0.8.0.dev33-py3-none-any.whl
Algorithm Hash digest
SHA256 2681803f806f1e09715a9f3bd4db66b45576ffcb94041a58f747b0a263f3746a
MD5 8a661296a34a25894558f446395cb9e6
BLAKE2b-256 2d0a1c36857443da1cc7e260f83b147868a917e9d61659ba4e7ee479592f41fc

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page