Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

Circular Image

pyinsole is an asynchronous message dispatcher inpired by loafer designed to provide a flexible and efficient way to consume messages from Amazon SQS queues. The pyinsole simplifies the process of integrating with SQS by offering multiple consumption strategies, allowing you to choose the best approach for your application's needs.


💻 Usage

The script defines an asynchronous message handler function (my_handler) that will be invoked whenever a message is received from the SQS queue. The SQSRoute class is used to route messages from the example-queue to the handler.

Example Code

Here’s the main code that processes messages from the example-queue. The script will listen for messages on the example-queue, and for each message received, it will print the message content, associated metadata, and any additional keyword arguments.

import os

from pyinsole import Manager
from pyinsole.ext.aws import SQSRoute

async def my_handler(message: dict, metadata: dict, **kwargs):
    print(f"message={message}, metadata={metadata}, kwargs={kwargs}")
    return True

provider_options = {
    "endpoint_url": os.getenv("AWS_ENDPOINT_URL"),
    "options": {
        "MaxNumberOfMessages": 10,
        "WaitTimeSeconds": os.getenv("AWS_WAIT_TIME_SECONDS", 20),
    },
}

routes = [
    SQSRoute('example-queue', handler=my_handler, provider_options=provider_options),
]

if __name__ == '__main__':
    manager = Manager(routes)
    manager.run()

Or you can use class based handlers if you prefer:

import os

from pyinsole import Manager
from pyinsole.ext.aws import SQSRoute
from pyinsole.ext.handlers import AsyncHandler

class MyHandler(AsyncHandler):
    async def process(self, message, metadata, **kwargs) -> bool:
        print(f"message={message}, metadata={metadata}, kwargs={kwargs}")
        return  True

provider_options = {
    "endpoint_url": os.getenv("AWS_ENDPOINT_URL"),
    "options": {
        "MaxNumberOfMessages": 10,
        "WaitTimeSeconds": os.getenv("AWS_WAIT_TIME_SECONDS", 20),
    },
}

routes = [
    SQSRoute('example-queue', handler=MyHandler(), provider_options=provider_options),
]

if __name__ == '__main__':
    manager = Manager(routes)
    manager.run()

Running the Script

This setup allows you to easily process messages from an SQS queue using the pyinsole library. You can modify the my_handler function to implement your specific message processing logic.

  1. Start LocalStack (or ensure you have access to AWS SQS). If you are using LocalStack, make sure it's running and the example-queue is created:

    aws --endpoint-url=http://localhost:4566 sqs create-queue --queue-name example-queue
    
  2. Run the script:

    python your_script.py
    
  3. Push some messages:

    aws --endpoint-url=http://localhost:4566 sqs send-message --queue-url http://localhost:4566/000000000000/example-queue --message-body "Your message body"
    

🎯 Roadmap

You can find the project roadmap here.

This document outlines future improvements, features, and tasks planned for the project.


🫱🏻‍🫲🏽 How to contribute

We welcome contributions of all kinds to make pyinsole better! To contribute to the project, follow these steps:

  1. Fork the repository: Click on the "Fork" button at the top right of the repository page.

  2. Clone your fork:

    git clone https://github.com/edopneto/pyinsole
    cd pyinsole
    
  3. Create a new branch: It's best practice to create a feature branch for your changes.

    git checkout -b feature/your-feature-name
    
  4. Make your changes: Work on your feature, bug fix, or documentation improvement.

  5. Test your changes: Ensure everything is working as expected.

  6. Commit your changes:

    git add .
    git commit -m "Add a brief message describing your changes"
    
  7. Push to your branch:

    git push origin feature/your-feature-name
    
  8. Open a Pull Request: Go to the repository on GitHub, and you’ll see a button to "Compare & Pull Request." Submit a pull request with a clear title and description of your changes.

Metadata

Release files for pyinsole 0.2.0a3

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

Source distribution (sdist)

Source distribution for pyinsole 0.2.0a3
File Size Uploaded Provenance Actions
pyinsole-0.2.0a3.tar.gz 706.6 kB With provenance Details for pyinsole-0.2.0a3.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pyinsole 0.2.0a3
File Interpreter ABI Platform Actions
pyinsole-0.2.0a3-py3-none-any.whl Python 3 none any Details for pyinsole-0.2.0a3-py3-none-any.whl

Total release size: 721.8 kB

Release files / pyinsole-0.2.0a3.tar.gz

Download URL pyinsole-0.2.0a3.tar.gz
Size 706.6 kB
Tags Source
SHA-256 checksum
How to use checksums
e0448f6c9286745af6c9f9876a643d91a3b74641858e08934a84157142632699
BLAKE2b-256 checksum
How to use checksums
252ec4a47e45d566d2d934df1c3ddc25e89f8b349c90afcbf6e30e3d240bdeae
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 10, 2024.

Transparency log

Release files / pyinsole-0.2.0a3-py3-none-any.whl

Download URL pyinsole-0.2.0a3-py3-none-any.whl
Size 15.2 kB
Tags Python 3
SHA-256 checksum
How to use checksums
94b2ab743f537c4e928a3e9b3222f19772d6d33fb4effdd5d2bdd0b8ba24cb9d
BLAKE2b-256 checksum
How to use checksums
4200d19286fb7e34e744cd86910740f2924b7fb11054dc16f4a169e7a02903a1
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/5.1.1 CPython/3.12.7

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 10, 2024.

Transparency log

Security for pyinsole 0.2.0a3

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for pyinsole-0.2.0a3.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Dec 10, 2024.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

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