Skip to main content

Redis IPC framework for Python and protobuf message types

Project description

Redis IPC

Python application Upload Python Package

A Python library for Redis-based Inter-Process Communication (IPC) with built-in logging capabilities.

Overview

Redis IPC provides a robust framework for implementing inter-process communication using Redis pub/sub mechanisms. It includes utilities for:

  • Redis client management (both sync and async)
  • Channel-based message publishing and subscription
  • Automatic message logging to PostgreSQL databases
  • Verbose logging and debugging support
  • Protocol Buffer message handling

Features

  • Redis Client Management: Base classes for both synchronous and asynchronous Redis operations
  • Channel Management: Easy-to-use channel-based messaging system
  • Message Logging: Automatic logging of all IPC messages to PostgreSQL
  • Protocol Buffer Support: Built-in support for Protocol Buffer message types
  • Verbose Logging: Comprehensive logging and debugging capabilities
  • Database Integration: Seamless integration with PostgreSQL for message persistence

Installation

pip install ryutils

Quick Start

Here's a complete example of how to use the Redis IPC Logger:

import argparse

from ryutils.verbose import Verbose

from config import constants
from database.parse_args import add_postgres_db_args
from ipc.ipc_logger import IpcLogger
from ipc.redis_args import add_redis_args


def parse_args() -> argparse.Namespace:
    parser = argparse.ArgumentParser(description="Run the Redis IPC Logger")

    add_postgres_db_args(parser)
    add_redis_args(parser)

    Verbose.add_arguments(parser, verbose_types=constants.VERBOSE_TYPES)

    return parser.parse_args()


def main() -> None:
    args = parse_args()
    verbose = Verbose(args=args, print_args=True, verbose_types=constants.VERBOSE_TYPES)

    ipc_logger = IpcLogger(verbose=verbose, args=args)
    ipc_logger.subscribe_all()
    ipc_logger.run()


if __name__ == "__main__":
    main()

Usage

1. Setting Up Arguments

The library provides argument parsers for both Redis and PostgreSQL configuration:

from ipc.redis_args import add_redis_args
from database.parse_args import add_postgres_db_args

parser = argparse.ArgumentParser()
add_redis_args(parser)  # Adds Redis host, port, db, user, password, db_name
add_postgres_db_args(parser)  # Adds PostgreSQL connection arguments

2. Creating an IPC Logger

from ipc.ipc_logger import IpcLogger

ipc_logger = IpcLogger(verbose=verbose, args=args)

3. Subscribing to Messages

# Subscribe to all channels
ipc_logger.subscribe_all()

# Start the logger
ipc_logger.run()

Architecture

The library is built around several key components:

  • RedisClientBase: Base class for Redis operations
  • IpcLogger: Main logging class that subscribes to Redis channels
  • RedisReceiver: Handles Redis message reception
  • Channels: Manages channel-based messaging
  • Helpers: Utility functions for common operations

Configuration

Redis Configuration

  • redis_host: Redis server hostname
  • redis_port: Redis server port
  • redis_db: Redis database number
  • redis_user: Redis username (if authentication is enabled)
  • redis_password: Redis password
  • redis_db_name: Redis database name

PostgreSQL Configuration

The library automatically logs all IPC messages to a PostgreSQL database using the LogIpcMessage table.

Message Format

Messages are automatically converted to Protocol Buffer format and include:

  • Message content
  • Channel name
  • Timestamp (UTC)

Development

Requirements

  • Python 3.12+
  • Redis server
  • PostgreSQL database
  • Protocol Buffer support

Running Tests

# Activate virtual environment first
source venv/bin/activate

# Run tests
python -m pytest test/

License

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

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

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

ry_redis_bus-2.0.4.tar.gz (13.8 kB view details)

Uploaded Source

Built Distribution

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

ry_redis_bus-2.0.4-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

Details for the file ry_redis_bus-2.0.4.tar.gz.

File metadata

  • Download URL: ry_redis_bus-2.0.4.tar.gz
  • Upload date:
  • Size: 13.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.24

File hashes

Hashes for ry_redis_bus-2.0.4.tar.gz
Algorithm Hash digest
SHA256 f5501e16fb2e99b8b4b948433c99dc6b1e7d32295c3af4909ebc3a7abb750ab5
MD5 48a15fa369e472a388f3d404d1def078
BLAKE2b-256 c048f3d8e4ed4b40d5bb70bde0d0a166a902c262a2c687793fe3213aa9dd8909

See more details on using hashes here.

File details

Details for the file ry_redis_bus-2.0.4-py3-none-any.whl.

File metadata

  • Download URL: ry_redis_bus-2.0.4-py3-none-any.whl
  • Upload date:
  • Size: 15.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.9.24

File hashes

Hashes for ry_redis_bus-2.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 6f112c5ce6aaa2959ae25f33964216e7a19df6301f2cd702647b9b178fa0a7b7
MD5 b0eec0855f05997a7896b0d8ae15f6d6
BLAKE2b-256 de874e4832f3c9a93cea56e9e80ca3336e6aafcf1d59b00ffb05a4ff1d70aa20

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