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.1.tar.gz (8.0 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.1-py3-none-any.whl (7.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fastsqs-0.1.1.tar.gz
  • Upload date:
  • Size: 8.0 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.1.tar.gz
Algorithm Hash digest
SHA256 dfe9a6f37672dc2e874bc91ad38444b4366740e3547f54264ed239c41dd8101b
MD5 305ba79de07d276485f5271e58785866
BLAKE2b-256 bec7160507703dd191cda013daddb6c7021fb1cb997bc7b132e7c914de499e3c

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fastsqs-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 7.9 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.1-py3-none-any.whl
Algorithm Hash digest
SHA256 51c9a95076c9996f23e6eb6abd6b15c0dec6c0ad25e72907b4ad0f566cd7cdc4
MD5 9f37319118cae0594fe496cb268ead6f
BLAKE2b-256 3767e4e373b1f31a4c2b1cc7c76c4cb8aa92e81a1906f583caecc16e4f7ba911

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