freeleaps-service-hub/apps/notification/common/config/rate_limit_settings.py

29 lines
996 B
Python

import os
from typing import Dict, Any
from pydantic_settings import BaseSettings
class RateLimitSettings(BaseSettings):
GLOBAL_HOURLY_LIMIT: int = int(os.getenv("GLOBAL_HOURLY_LIMIT", "10000"))
GLOBAL_DAILY_LIMIT: int = int(os.getenv("GLOBAL_DAILY_LIMIT", "100000"))
SENDER_HOURLY_LIMIT: int = int(os.getenv("SENDER_HOURLY_LIMIT", "100"))
SENDER_DAILY_LIMIT: int = int(os.getenv("SENDER_DAILY_LIMIT", "1000"))
DEFAULT_TENANT_HOURLY_LIMIT: int = int(os.getenv("DEFAULT_TENANT_HOURLY_LIMIT", "500"))
DEFAULT_TENANT_DAILY_LIMIT: int = int(os.getenv("DEFAULT_TENANT_DAILY_LIMIT", "5000"))
TENANT_SPECIFIC_LIMITS: str = os.getenv("TENANT_SPECIFIC_LIMITS", "{}")
HOURLY_WINDOW: int = 3600
DAILY_WINDOW: int = 86400
RESET_TIME_HOUR: int = 0
RESET_TIME_MINUTE: int = 0
class Config:
env_file = ".env"
env_file_encoding = "utf-8"
extra = "ignore"
rate_limit_settings = RateLimitSettings()