Files
wiki/tasks/flightradar24/ingest/schedule/config.py
2026-04-20 15:50:01 +03:00

49 lines
1.7 KiB
Python

import os
from dataclasses import dataclass, field
from typing import Dict
@dataclass
class Config:
# Database
DB_HOST: str = os.getenv("POSTGRES_HOST", "fr24-postgres")
DB_PORT: int = int(os.getenv("POSTGRES_PORT", "5432"))
DB_NAME: str = os.getenv("POSTGRES_DB", "fr24")
DB_USER: str = os.getenv("POSTGRES_USER", "fr24")
DB_PASSWORD: str = os.getenv("POSTGRES_PASSWORD", "change-me")
# API keys
YANDEX_RASP_API_KEY: str = os.getenv("YANDEX_RASP_API_KEY", "")
OPENSKY_USERNAME: str = os.getenv("OPENSKY_USERNAME", "")
OPENSKY_PASSWORD: str = os.getenv("OPENSKY_PASSWORD", "")
# Airports: IATA → metadata
AIRPORTS: Dict = field(default_factory=lambda: {
"SVO": {"iata": "SVO", "icao": "UUEE", "yandex_code": "s9600213", "name": "Шереметьево"},
"DME": {"iata": "DME", "icao": "UUDD", "yandex_code": "s9600366", "name": "Домодедово"},
"VKO": {"iata": "VKO", "icao": "UUWW", "yandex_code": "s9600215", "name": "Внуково"},
"ZIA": {"iata": "ZIA", "icao": "UUBW", "yandex_code": "s9850865", "name": "Жуковский"},
})
# Rate limits (seconds between requests)
YANDEX_RATE_LIMIT_SEC: float = float(os.getenv("YANDEX_RATE_LIMIT_SEC", "1.0"))
OPENSKY_RATE_LIMIT_SEC: float = float(os.getenv("OPENSKY_RATE_LIMIT_SEC", "30.0"))
# Retention
RETENTION_DAYS: int = int(os.getenv("SCHEDULE_RETENTION_DAYS", "1095"))
# Cron schedule (UTC)
DAILY_RUN_HOUR: int = 2
DAILY_RUN_MINUTE: int = 0
@property
def DB_DSN(self) -> str:
return (
f"host={self.DB_HOST} port={self.DB_PORT} "
f"dbname={self.DB_NAME} user={self.DB_USER} "
f"password={self.DB_PASSWORD}"
)
config = Config()