Source code for stabilize.queue.processor.config

"""
Configuration for the queue processor.

This module provides the QueueProcessorConfig dataclass with
values that can be loaded from environment variables via HandlerConfig.
"""

from __future__ import annotations

from dataclasses import dataclass
from datetime import timedelta

from stabilize.resilience.config import HandlerConfig, get_handler_config


[docs] @dataclass class QueueProcessorConfig: """Configuration for the queue processor. Values can be loaded from environment variables via HandlerConfig. See HandlerConfig documentation for environment variable names. """ # How often to poll the queue (milliseconds) poll_frequency_ms: int = 50 # Maximum number of concurrent message handlers max_workers: int = 10 # Delay before reprocessing a failed message retry_delay: timedelta = timedelta(seconds=15) # Whether to stop on unhandled exceptions stop_on_error: bool = False # Enable message deduplication for idempotency enable_deduplication: bool = True
[docs] @classmethod def from_handler_config(cls, handler_config: HandlerConfig | None = None) -> QueueProcessorConfig: """Create QueueProcessorConfig from HandlerConfig. Args: handler_config: HandlerConfig to use. If None, loads from environment. Returns: QueueProcessorConfig with values from HandlerConfig """ config = handler_config or get_handler_config() return cls( poll_frequency_ms=config.poll_frequency_ms, max_workers=config.max_workers, retry_delay=timedelta(seconds=config.handler_retry_delay_seconds), )