Redis IPC framework for Python and protobuf message types
Project description
Redis IPC
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 operationsIpcLogger: Main logging class that subscribes to Redis channelsRedisReceiver: Handles Redis message receptionChannels: Manages channel-based messagingHelpers: Utility functions for common operations
Configuration
Redis Configuration
redis_host: Redis server hostnameredis_port: Redis server portredis_db: Redis database numberredis_user: Redis username (if authentication is enabled)redis_password: Redis passwordredis_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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ry_redis_bus-2.1.5.tar.gz.
File metadata
- Download URL: ry_redis_bus-2.1.5.tar.gz
- Upload date:
- Size: 13.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4522c81b0286bb24c0211120389c7833f07c0c86d35d7d1721fe2ddee7e1d57b
|
|
| MD5 |
ed85760753fe39463182ccd6f70ff8d0
|
|
| BLAKE2b-256 |
a70768ed0a2e8c6d9f4b2d17cf0f8c296a8a05346d6b2d066c682210981f8dcc
|
File details
Details for the file ry_redis_bus-2.1.5-py3-none-any.whl.
File metadata
- Download URL: ry_redis_bus-2.1.5-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.25
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
019126a0cac052c95ff5b0481dd5c29887172e8e52a11b529476effa1bff64f2
|
|
| MD5 |
067a0267599032b06c7ab8b0b29ebf8a
|
|
| BLAKE2b-256 |
22688c13b964d69fbacbe313445531cce148a169a79bcd83953b6da078d202e7
|