Skip to main content

Async SQS routing and middleware library

Project description

fastsqs

Fast, modern, async SQS routing and middleware for Python.

PyPI version License: MIT


Key Features

  • 🚀 High Performance: Async message routing for AWS SQS, designed for speed and scalability.
  • 🧩 Declarative Routing: Organize your SQS message handling with nested routers and decorators.
  • 🔒 Validation: Per-route payload validation using Pydantic models.
  • 🛠️ Middleware: Add before/after hooks for logging, timing, masking, and more.
  • 🦾 Partial Batch Failure: Native support for AWS Lambda batch failure responses.
  • 🐍 Pythonic & Intuitive: Type hints, editor support, and a familiar API for Python developers.

Requirements

  • Python 3.8+
  • Pydantic (installed automatically)

Installation

pip install fastsqs

Example

Create your app

from fastsqs import QueueApp, QueueRouter, Middleware
from pydantic import BaseModel

class GreetingPayload(BaseModel):
    type: str
    message: str

router = QueueRouter("type")

@router.route("greeting", model=GreetingPayload)
async def handle_greeting(payload, record, context, ctx, data):
    print(f"Greeting: {data.message}")

app = QueueApp(title="Greeting SQS App", debug=True)
app.include_router(router)

def lambda_handler(event, context):
    return app.handler(event, context)

Add Middleware

class PrintMiddleware(Middleware):
    async def before(self, payload, record, context, ctx):
        print("Before:", payload)
    async def after(self, payload, record, context, ctx, error):
        print("After:", payload, "Error:", error)

app.add_middleware(PrintMiddleware())

How it Works

  • Routing: Use QueueRouter to route messages by payload fields. Decorators make it easy to register handlers.
  • Validation: Attach Pydantic models to routes for automatic payload validation.
  • Middleware: Add global or per-route middleware for logging, timing, masking, etc.
  • Batch Failure: Handles partial failures for SQS-triggered Lambda functions, so only failed messages are retried.

Documentation


Contributing

Contributions, issues, and feature requests are welcome!
Please open an issue or submit a pull request.


License

This project is licensed under the terms of the MIT license.


Ready to build async, robust SQS message processors? Try fastsqs today!

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

fastsqs-0.1.0.tar.gz (2.9 kB view details)

Uploaded Source

Built Distribution

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

fastsqs-0.1.0-py3-none-any.whl (2.8 kB view details)

Uploaded Python 3

File details

Details for the file fastsqs-0.1.0.tar.gz.

File metadata

  • Download URL: fastsqs-0.1.0.tar.gz
  • Upload date:
  • Size: 2.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for fastsqs-0.1.0.tar.gz
Algorithm Hash digest
SHA256 2b507bd394943970a2da46f34c62f95e8c7bfaf9d9e6da94a27ceb243c68bc52
MD5 73bfb858747cecda729b2d0909932677
BLAKE2b-256 e02bf941244c5247c22dcf4366aedc7e3cd3596307e76d4e1b788070ae098637

See more details on using hashes here.

File details

Details for the file fastsqs-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: fastsqs-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 2.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.5

File hashes

Hashes for fastsqs-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 291199c3d22569d4839fe8274f01292be1c21766a902ebca98543787c93dff04
MD5 2507e485cdc93676a716a1a642421603
BLAKE2b-256 f5b98ef2789ed4d09477bc965fc926213bd9db54ed86cad6b324f7943697c9e5

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