Scheduler backend configuration settings. Supports multiple scheduler backends: - memory: In-memory scheduler (default, single-process) - redis: Redis scheduler (distributed, multi-process) Redis settings must be provided via environment variables or config.
| 844 | |
| 845 | |
| 846 | class SchedulerSettings(BaseSettings): |
| 847 | """Scheduler backend configuration settings. |
| 848 | |
| 849 | Supports multiple scheduler backends: |
| 850 | - memory: In-memory scheduler (default, single-process) |
| 851 | - redis: Redis scheduler (distributed, multi-process) |
| 852 | |
| 853 | Redis settings must be provided via environment variables or config. |
| 854 | """ |
| 855 | |
| 856 | model_config = SettingsConfigDict( |
| 857 | env_file=".env", |
| 858 | extra="allow", |
| 859 | ) |
| 860 | |
| 861 | # Scheduler backend selection |
| 862 | backend: Literal["memory", "redis"] = Field( |
| 863 | default="memory", |
| 864 | validation_alias=AliasChoices("backend", "SCHEDULER_TYPE"), |
| 865 | ) |
| 866 | |
| 867 | # Redis Configuration - must be provided via env vars or config |
| 868 | redis_url: str | None = Field( |
| 869 | default=None, |
| 870 | validation_alias=AliasChoices("redis_url", "REDIS_URL"), |
| 871 | ) |
| 872 | redis_host: str | None = None |
| 873 | redis_port: int | None = None |
| 874 | redis_password: str | None = None |
| 875 | redis_db: int | None = None |
| 876 | queue_name: str = "bindu:tasks" # Can keep default queue name |
| 877 | max_connections: int = 10 # Connection pool setting |
| 878 | retry_on_timeout: bool = True # Retry behavior setting |
| 879 | poll_timeout: int = Field( |
| 880 | default=1, |
| 881 | validation_alias=AliasChoices("poll_timeout", "REDIS_POLL_TIMEOUT"), |
| 882 | description="Timeout in seconds for Redis blpop operations. Higher values reduce API calls but increase task start latency.", |
| 883 | ) |
| 884 | |
| 885 | |
| 886 | class RetrySettings(BaseSettings): |