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(key="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)

Example Payload

{
  "type": "greeting",
  "message": "Hello from SQS!"
}

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.4.tar.gz (10.2 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.4-py3-none-any.whl (11.4 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: fastsqs-0.1.4.tar.gz
  • Upload date:
  • Size: 10.2 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.4.tar.gz
Algorithm Hash digest
SHA256 a842be33fd90deba4b18418d153794e05675b8466893744b9d711c505ee63a75
MD5 668ba3654577bded5a590904a7cb72e3
BLAKE2b-256 ebeea0ba3f76d25de99beb54a542b28e72a6e90e215607f83eaf033241616479

See more details on using hashes here.

File details

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

File metadata

  • Download URL: fastsqs-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 11.4 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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 6435e86e123d97db86f7f02afaa1b52fcc2c4715c257425703d1d9a472f46ad2
MD5 2957d6fcdbf107266d61a068148a2a8a
BLAKE2b-256 e6cadd47870a66689bb5dce742e84d5b4f38e8510f943e5e976413018a146e21

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