birb-scheduler/birb_scheduler/config.py

47 lines
1.4 KiB
Python

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))