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.2.tar.gz (7.2 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.2-py3-none-any.whl (8.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: generic_consumer-0.20.2.tar.gz
  • Upload date:
  • Size: 7.2 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.2.tar.gz
Algorithm Hash digest
SHA256 3c0d777caab9865381f5093a7422b9cf231789690e00eb8098ff3b2369b2a625
MD5 41ceb0b067454e6d489ec80a7e68a383
BLAKE2b-256 6811af9cea69b75c0ba7afc63e38d6ba9b83ba54d11d7f7f35d23f4e7e0551e8

See more details on using hashes here.

File details

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

File metadata

  • Download URL: generic_consumer-0.20.2-py3-none-any.whl
  • Upload date:
  • Size: 8.6 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 ee7a1e7fa2f95c455d23722479ee279901d63922cdd17c6db82de7688292ad30
MD5 28fdb6dfecd9aa16292e195f4723d30c
BLAKE2b-256 90acf82e94aca501c6a193cb13215e38c519e11e5782d7999de0d9aab2dc9039

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