Refactor of caching & data storage part 1

This commit is contained in:
Ian Renton
2026-07-31 14:12:55 +01:00
parent 266468f938
commit d26ddff7d1
17 changed files with 277 additions and 253 deletions
+8 -26
View File
@@ -5,23 +5,16 @@ import os
import signal
import sys
from diskcache import Cache
from core.cleanup import CleanupTimer
from core.config import config, SERVER_OWNER_CALLSIGN, LOG_LEVEL
from core.constants import SOFTWARE_VERSION
from core.data_store import DATA_STORE
from core.lookup_helper import lookup_helper
from core.status_reporter import StatusReporter
from data.solar_conditions import SolarConditions
from server.webserver import WebServer
# Globals
spots = Cache('cache/spots_cache')
alerts = Cache('cache/alerts_cache')
solar_conditions_cache = Cache('cache/solar_conditions_cache')
solar_conditions = solar_conditions_cache.get('solar_conditions', SolarConditions())
data_store = DATA_STORE
web_server = None
status_data = {}
spot_providers = []
alert_providers = []
solar_condition_providers = []
@@ -46,13 +39,7 @@ def shutdown(_signum=None, _frame=None):
for scp in solar_condition_providers:
if scp.enabled:
scp.stop()
if cleanup_timer:
cleanup_timer.stop()
if lookup_helper:
lookup_helper.stop()
spots.close()
alerts.close()
solar_conditions_cache.close()
data_store.close()
os._exit(0)
@@ -103,13 +90,13 @@ if __name__ == '__main__':
lookup_helper.start()
# Set up web server
web_server = WebServer(spots=spots, alerts=alerts, solar_conditions=solar_conditions, status_data=status_data)
web_server = WebServer(data_store=data_store)
# Fetch, set up and start spot providers
for entry in config["spot-providers"]:
spot_providers.append(get_spot_provider_from_config(entry))
for p in spot_providers:
p.setup(spots=spots, web_server=web_server)
p.setup(spots=data_store.spots, web_server=web_server)
if p.enabled:
p.start()
@@ -117,7 +104,7 @@ if __name__ == '__main__':
for entry in config["alert-providers"]:
alert_providers.append(get_alert_provider_from_config(entry))
for p in alert_providers:
p.setup(alerts=alerts, web_server=web_server)
p.setup(alerts=data_store.alerts, web_server=web_server)
if p.enabled:
p.start()
@@ -125,17 +112,12 @@ if __name__ == '__main__':
for entry in config.get("solar-condition-providers", []):
solar_condition_providers.append(get_solar_conditions_provider_from_config(entry))
for p in solar_condition_providers:
p.setup(solar_conditions=solar_conditions, solar_conditions_cache=solar_conditions_cache)
p.setup(solar_conditions=data_store.solar_conditions)
if p.enabled:
p.start()
# Set up timer to clear spot list of old data
cleanup_timer = CleanupTimer(spots=spots, alerts=alerts, web_server=web_server, cleanup_interval=60)
cleanup_timer.start()
# Set up status reporter
status_reporter = StatusReporter(status_data=status_data, spots=spots, alerts=alerts, web_server=web_server,
cleanup_timer=cleanup_timer, spot_providers=spot_providers,
status_reporter = StatusReporter(data_store=data_store, web_server=web_server, spot_providers=spot_providers,
alert_providers=alert_providers,
solar_condition_providers=solar_condition_providers, run_interval=5)
status_reporter.start()