import os import sys from dataclasses import dataclass from typing import List @dataclass class SiteDescription: name: str baseurl: str def parse_site_list(raw_site_list: str) -> List[SiteDescription]: parsed_sites = [] for pair in raw_site_list.split(' '): name, baseurl = pair.split(';', 1) parsed_sites.append( SiteDescription( name=name, baseurl=baseurl ) ) return parsed_sites class Config: INTERVAL = int(os.environ.get("INTERVAL", 30)) SITE_LIST = parse_site_list(os.environ.get("SITES")) # This is in priority order SENTRY_DSN = os.environ.get("SENTRY_DSN") RELEASE_ID = os.environ.get("RELEASE_ID", "test") RELEASEMODE = os.environ.get("RELEASEMODE", "dev") DEBUG = ('--debug' in sys.argv) or bool(os.environ.get("DEBUG", "").upper() in ['YES', 'TRUE', '1']) REDIS_URL = os.environ["REDIS_URL"] COLLECTOR_URL = os.environ["COLLECTOR_URL"] # http://example.com/report/ # how many times an incraising queue must be observed for an action to be taken RESCHEDULE_TIRGGER_LEVEL = int(os.environ.get("RESCHEDULE_TIRGGER_LEVEL", 5)) # The counter clears itself after some time RESCHEDULE_TRIGGER_COUNTER_TTL = int(os.environ.get("RESCHEDULE_TRIGGER_COUNTER_TTL", 60)) # how long a mark should live on a site which had troubled recently RECENT_TROUBLE_TTL = int(os.environ.get("RECENT_TROUBLE_TTL", 120))