mirror of
https://git.ianrenton.com/ian/spothole.git
synced 2026-03-15 20:34:31 +00:00
Improve adherence to python coding standards and clear up IDE static analysis warnings
This commit is contained in:
@@ -22,13 +22,13 @@ class WebServer:
|
||||
def __init__(self, spots, alerts, status_data, port):
|
||||
"""Constructor"""
|
||||
|
||||
self.spots = spots
|
||||
self.alerts = alerts
|
||||
self.sse_spot_queues = []
|
||||
self.sse_alert_queues = []
|
||||
self.status_data = status_data
|
||||
self.port = port
|
||||
self.shutdown_event = asyncio.Event()
|
||||
self._spots = spots
|
||||
self._alerts = alerts
|
||||
self._sse_spot_queues = []
|
||||
self._sse_alert_queues = []
|
||||
self._status_data = status_data
|
||||
self._port = port
|
||||
self._shutdown_event = asyncio.Event()
|
||||
self.web_server_metrics = {
|
||||
"last_page_access_time": None,
|
||||
"last_api_access_time": None,
|
||||
@@ -40,33 +40,33 @@ class WebServer:
|
||||
def start(self):
|
||||
"""Start the web server"""
|
||||
|
||||
asyncio.run(self.start_inner())
|
||||
asyncio.run(self._start_inner())
|
||||
|
||||
def stop(self):
|
||||
"""Stop the web server"""
|
||||
|
||||
self.shutdown_event.set()
|
||||
self._shutdown_event.set()
|
||||
|
||||
async def start_inner(self):
|
||||
async def _start_inner(self):
|
||||
"""Start method (async). Sets up the Tornado application."""
|
||||
|
||||
app = tornado.web.Application([
|
||||
# Routes for API calls
|
||||
(r"/api/v1/spots", APISpotsHandler, {"spots": self.spots, "web_server_metrics": self.web_server_metrics}),
|
||||
(r"/api/v1/spots", APISpotsHandler, {"spots": self._spots, "web_server_metrics": self.web_server_metrics}),
|
||||
(r"/api/v1/alerts", APIAlertsHandler,
|
||||
{"alerts": self.alerts, "web_server_metrics": self.web_server_metrics}),
|
||||
{"alerts": self._alerts, "web_server_metrics": self.web_server_metrics}),
|
||||
(r"/api/v1/spots/stream", APISpotsStreamHandler,
|
||||
{"sse_spot_queues": self.sse_spot_queues, "web_server_metrics": self.web_server_metrics}),
|
||||
{"sse_spot_queues": self._sse_spot_queues, "web_server_metrics": self.web_server_metrics}),
|
||||
(r"/api/v1/alerts/stream", APIAlertsStreamHandler,
|
||||
{"sse_alert_queues": self.sse_alert_queues, "web_server_metrics": self.web_server_metrics}),
|
||||
{"sse_alert_queues": self._sse_alert_queues, "web_server_metrics": self.web_server_metrics}),
|
||||
(r"/api/v1/options", APIOptionsHandler,
|
||||
{"status_data": self.status_data, "web_server_metrics": self.web_server_metrics}),
|
||||
{"status_data": self._status_data, "web_server_metrics": self.web_server_metrics}),
|
||||
(r"/api/v1/status", APIStatusHandler,
|
||||
{"status_data": self.status_data, "web_server_metrics": self.web_server_metrics}),
|
||||
{"status_data": self._status_data, "web_server_metrics": self.web_server_metrics}),
|
||||
(r"/api/v1/lookup/call", APILookupCallHandler, {"web_server_metrics": self.web_server_metrics}),
|
||||
(r"/api/v1/lookup/sigref", APILookupSIGRefHandler, {"web_server_metrics": self.web_server_metrics}),
|
||||
(r"/api/v1/lookup/grid", APILookupGridHandler, {"web_server_metrics": self.web_server_metrics}),
|
||||
(r"/api/v1/spot", APISpotHandler, {"spots": self.spots, "web_server_metrics": self.web_server_metrics}),
|
||||
(r"/api/v1/spot", APISpotHandler, {"spots": self._spots, "web_server_metrics": self.web_server_metrics}),
|
||||
# Routes for templated pages
|
||||
(r"/", PageTemplateHandler, {"template_name": "spots", "web_server_metrics": self.web_server_metrics}),
|
||||
(r"/map", PageTemplateHandler, {"template_name": "map", "web_server_metrics": self.web_server_metrics}),
|
||||
@@ -87,14 +87,14 @@ class WebServer:
|
||||
],
|
||||
template_path=os.path.join(os.path.dirname(__file__), "../templates"),
|
||||
debug=False)
|
||||
app.listen(self.port)
|
||||
await self.shutdown_event.wait()
|
||||
app.listen(self._port)
|
||||
await self._shutdown_event.wait()
|
||||
|
||||
def notify_new_spot(self, spot):
|
||||
"""Internal method called when a new spot is added to the system. This is used to ping any SSE clients that are
|
||||
awaiting a server-sent message with new spots."""
|
||||
|
||||
for queue in self.sse_spot_queues:
|
||||
for queue in self._sse_spot_queues:
|
||||
try:
|
||||
queue.put(spot)
|
||||
except:
|
||||
@@ -106,7 +106,7 @@ class WebServer:
|
||||
"""Internal method called when a new alert is added to the system. This is used to ping any SSE clients that are
|
||||
awaiting a server-sent message with new spots."""
|
||||
|
||||
for queue in self.sse_alert_queues:
|
||||
for queue in self._sse_alert_queues:
|
||||
try:
|
||||
queue.put(alert)
|
||||
except:
|
||||
@@ -118,22 +118,22 @@ class WebServer:
|
||||
"""Clean up any SSE queues that are growing too large; probably their client disconnected and we didn't catch it
|
||||
properly for some reason."""
|
||||
|
||||
for q in self.sse_spot_queues:
|
||||
for q in self._sse_spot_queues:
|
||||
try:
|
||||
if q.full():
|
||||
logging.warn(
|
||||
logging.warning(
|
||||
"A full SSE spot queue was found, presumably because the client disconnected strangely. It has been removed.")
|
||||
self.sse_spot_queues.remove(q)
|
||||
self._sse_spot_queues.remove(q)
|
||||
empty_queue(q)
|
||||
except:
|
||||
# Probably got deleted already on another thread
|
||||
pass
|
||||
for q in self.sse_alert_queues:
|
||||
for q in self._sse_alert_queues:
|
||||
try:
|
||||
if q.full():
|
||||
logging.warn(
|
||||
logging.warning(
|
||||
"A full SSE alert queue was found, presumably because the client disconnected strangely. It has been removed.")
|
||||
self.sse_alert_queues.remove(q)
|
||||
self._sse_alert_queues.remove(q)
|
||||
empty_queue(q)
|
||||
except:
|
||||
# Probably got deleted already on another thread
|
||||
|
||||
Reference in New Issue
Block a user