def __init__(self) -> None: """Initializes the class.""" self.callThreshold = int(os.getenv("CALL_THRESHOLD", 1)) self.debug = os.getenv("DEBUG", "true").lower() == "true" self.reportLatency = os.getenv("REPORT_LATENCY", "false").lower() == "true" self.window_minutes = int(os.getenv("WINDOW_M", 5)) self.timezone = pytz.timezone(os.getenv("TIMEZONE", "US/Pacific")) # The actual look back is the length of this lookback + lag compensation. For example: 300+45=345 seconds self.lookback = os.getenv("LOOKBACK_S", 300) self.cachedTweet: int = None self.cachedTime: datetime = None self.cache = TTLCache(maxsize=100, ttl=self.lookback) self.scraper = Scraper.Instance(self.BASE_URL, self.lookback) self.latency = [timedelta(seconds=0)] if not self.debug: # Does not need to be saved for later. # If the keys aren't in env this will still run. auth = tweepy.OAuthHandler(os.getenv("CONSUMER_KEY", ""), os.getenv("CONSUMER_SECRET", "")) auth.set_access_token(os.getenv("ACCESS_TOKEN_KEY", ""), os.getenv("ACCESS_TOKEN_SECRET", "")) self.api = tweepy.API(auth) # Test the authentication. This will gracefully fail if the keys aren't present. try: self.api.rate_limit_status() except TweepError as e: if e.api_code == 215: log.error("No keys or bad keys") else: log.error("Other API error: {}".format(e)) exit(1) self.interval = Set.Interval(30, self._check)