Skip to main content

A queuing library based on Peewee

Project description

Queupy

Queupy is a Python library designed to provide a fast and safe message queuing system using PostgreSQL. It creates a dedicated table _queupy_event to handle event messages efficiently with both producer and consumer functionalities.

Features

  • Simple initialization and setup (no need for additional services)
  • Efficient event queuing using PostgreSQL
  • Easy-to-use producer and consumer interfaces for event handling

Installation

To install Queupy, use pip:

pip install queupy

Usage

Consumer Example

Below is an example of how to use Queupy to consume events from the queue.

from queupy import init_queue

event_queue = init_queue(
    database_name='queupy',
    host='localhost',
    user='queupy',
    password='queupy',
)

for event in event_queue.consume('test', frequency=0.01):
    print(f"Consuming event {event}")

Producer Example

Here is an example of how to use Queupy to push events to the queue.

from queupy import init_queue


event_queue = init_queue(
    database_name='queupy',
    host='localhost',
    user='queupy',
    password='queupy',
)

for i in range(1000):
    event_queue.push('test', {'i': i})

Configuration

Database Configuration

Ensure that your PostgreSQL database is properly configured and accessible. Queupy requires the following parameters for initialization:

  • database_name: The name of your PostgreSQL database.
  • host: The host address of your PostgreSQL server.
  • user: The username to access your PostgreSQL database.
  • password: The password for the PostgreSQL user.

Table Schema

Queupy will automatically create the _queupy_event table in your specified database. Ensure your database user has the necessary permissions to create and modify tables.

id event state payload transaction_id created_at updated_at
7148 test 0 {"i": 58} 2024-07-26 17:20:51.34825 2024-07-26 17:20:51.34825
2 test 1 {"i": 1} 8000142a-42b9-4656-8518-81e3ee6bd20b 2024-07-26 14:06:22.596648 2024-07-26 16:15:56.322857
3 test 1 {"i": 2} a6e8b353-c53d-48fb-b8b0-5a972648b384 2024-07-26 14:06:22.598692 2024-07-26 16:15:57.381679

Not consumed events have a state of 0, while consumed events have a state of 1. The transaction_id is used to ensure that events are consumed only once.

Contributing

Contributions are welcome! Please fork the repository and submit a pull request with your improvements.

License

This project is licensed under the MIT License. See the LICENSE file for details.

Contact

For any questions or issues, please open an issue on the GitHub repository or contact the author at [enzo.the@gmail.com]


Happy queuing with Queupy!

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

queupy-0.1.3.tar.gz (6.2 kB view details)

Uploaded Source

Built Distribution

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

queupy-0.1.3-py3-none-any.whl (6.8 kB view details)

Uploaded Python 3

File details

Details for the file queupy-0.1.3.tar.gz.

File metadata

  • Download URL: queupy-0.1.3.tar.gz
  • Upload date:
  • Size: 6.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for queupy-0.1.3.tar.gz
Algorithm Hash digest
SHA256 6193f35fe42a2987dcb391f4f2d1cff07421f3eab160fd7a7916fe297eeffdbd
MD5 8a35ee18e97c35f3f2ca0aab72cb61af
BLAKE2b-256 574cc5007df57dc64dbe3b15a9c424cbb9a53d9fc45b39f084f704b3f548c8ed

See more details on using hashes here.

File details

Details for the file queupy-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: queupy-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 6.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.4

File hashes

Hashes for queupy-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 e2c8ebefe2048a9ac668f98f26bad4d41b148c583f7da7de592cc85c9d3f2ba1
MD5 6677bd3ea069dd8d0bbaf1dcc8685209
BLAKE2b-256 396eade5d07c9f7b08414283a473d18b714258dc4465c9a6d58e8c8e8b818063

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