Skip to main content

A generic consumer for Python.

Project description

Generic Consumer

A flexible Python library for implementing consumer patterns with a focus on payload processing and queue management.

Overview

Generic Consumer provides a framework for creating consumer classes that can process data payloads from various sources. It supports both synchronous and asynchronous processing with features like:

  • Prioritized execution order
  • Payload preprocessing
  • Conditional activation
  • Nested consumer hierarchies
  • Robust error handling
  • Customizable logging

Installation

Using pip

pip install generic-consumer

Quick Start

from generic_consumer import GenericConsumer

class MyConsumer(GenericConsumer):
    # Set the queue this consumer responds to
    @classmethod
    def queue_name(cls):
        return "my_queue"
    
    # Define where to get payloads from
    def get_payloads(self):
        return [1, 2, 3, 4, 5]
    
    # Process a single payload
    def process_one(self, payload):
        print(f"Processing: {payload}")
        
# Run all consumers for a queue
GenericConsumer.start("my_queue")

Key Features

Consumer Configuration

  • queue_name: Define which queue a consumer belongs to
  • priority_number: Set execution priority (lower numbers run first)
  • condition: Determine whether a consumer should run based on runtime conditions
  • enabled: Toggle consumer activation
  • process_empty_payloads: Handle cases where no payloads are available
  • passive: Create consumers that monitor but don't process (useful for logging)

Processing Pipeline

  1. get_payloads: Retrieve data to be processed
  2. payload_preprocessors: Transform payloads before processing
  3. process: Handle batch processing of all payloads
  4. process_one: Process individual payloads

Utility Methods

  • start_all/start: Run all consumers for a given queue
  • print_available_consumers: Display all registered consumers and their configurations
  • run: Execute a specific consumer
  • run_all: Execute all consumers

Advanced Usage

Passive Consumers

Use PassiveConsumer for monitoring or logging without modifying data:

from generic_consumer import PassiveConsumer

class LoggingConsumer(PassiveConsumer):
    @classmethod
    def queue_name(cls):
        return "my_queue"
    
    def process(self, payloads):
        print(f"Observed {len(payloads)} items")

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

generic_consumer-0.20.0.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

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

generic_consumer-0.20.0-py3-none-any.whl (8.5 kB view details)

Uploaded Python 3

File details

Details for the file generic_consumer-0.20.0.tar.gz.

File metadata

  • Download URL: generic_consumer-0.20.0.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.12.3 Linux/6.11.0-19-generic

File hashes

Hashes for generic_consumer-0.20.0.tar.gz
Algorithm Hash digest
SHA256 93364663e2a8bb08df7f2260206ec4bb15009df57258dda479f3833480bd1c8f
MD5 4341b36337e1ad1ec1dd80b1cedcbd3f
BLAKE2b-256 7730ef7c21b0b64c3b0c3478289c4e6678e903531783622a13543cf19608321d

See more details on using hashes here.

File details

Details for the file generic_consumer-0.20.0-py3-none-any.whl.

File metadata

  • Download URL: generic_consumer-0.20.0-py3-none-any.whl
  • Upload date:
  • Size: 8.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.1 CPython/3.12.3 Linux/6.11.0-19-generic

File hashes

Hashes for generic_consumer-0.20.0-py3-none-any.whl
Algorithm Hash digest
SHA256 f7db114c6d86f31b2af8dd676405c164519899b3e3be02e914d12d393cf7df0b
MD5 6978ab2929093757dfe0116887e7222a
BLAKE2b-256 a1779518be38daf8337f3c0ab9d5e2727adbb040c5a8192a40eca3345f85ff64

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