import logging from datetime import datetime import pytz from staticdataproviders.static_data_provider import StaticDataProvider class LocalFileStaticDataProvider(StaticDataProvider): """Generic static reference data provider class for providers that fetch their data from a local file on startup.""" def __init__(self, name, provider_config, path): super().__init__(name, provider_config) self._path = path def start(self): logging.debug("Loading " + self.name + " static reference data from file.") try: ok = self._load_data(self._path) if ok: self.status = "OK" self.last_update_time = datetime.now(pytz.UTC) logging.info("Updated static reference data for " + self.name) else: self.status = "Error" logging.error("Failed to load data for " + self.name) except Exception as e: self.status = "Error" logging.error("Exception in local file Static Data Provider (" + self.name + ")", e, exc_info=True) def stop(self): pass def _load_data(self, path): """Load data from the given file path. Return true if successful, false otherwise.""" raise NotImplementedError("Subclasses must implement this method")