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.1.2.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.1.2-py3-none-any.whl (15.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: ry_redis_bus-2.1.2.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.1.2.tar.gz
Algorithm Hash digest
SHA256 f9ebfc22c7a282fb8d4f48696dfaeb616de03070e36c9c543f019ee12c8d184a
MD5 61dd34222a05ff749fe7beb7c0a6d537
BLAKE2b-256 9b5545b930502522a2b0051ce94b3aa2ce0a20414eae3a75f3e9b5bec75fbf01

See more details on using hashes here.

File details

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

File metadata

  • Download URL: ry_redis_bus-2.1.2-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.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 f5223605dae539279a0e8cc85eeca919c37850145064e5568c9d56605289d22a
MD5 f353969949f7082c104a7a860a3e009f
BLAKE2b-256 753f3b8ba830f9bf76fa6e0e8e87041592b7f027d65659c01a4a1453ac601e5a

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