File size: 933 Bytes
3243379
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
from typing import Optional
from pydantic import BaseModel, Field

class RedisConfig(BaseModel):
    host: str = Field(default="localhost")
    port: int = Field(default=6379)
    db: int = Field(default=0)
    password: Optional[str] = Field(default=None)
    ssl: bool = Field(default=False)
    connection_pool_size: int = Field(default=10)

class RetryConfig(BaseModel):
    max_retries: int = Field(default=3)
    initial_delay: float = Field(default=1.0)  # seconds
    max_delay: float = Field(default=60.0)  # seconds
    backoff_factor: float = Field(default=2.0)

class BrokerConfig(BaseModel):
    redis: RedisConfig = Field(default_factory=RedisConfig)
    retry: RetryConfig = Field(default_factory=RetryConfig)
    num_workers: int = Field(default=1)
    batch_size: int = Field(default=10)
    polling_interval: float = Field(default=1.0)  # seconds
    metrics_port: int = Field(default=8000)