mirror of
https://git.ianrenton.com/ian/spothole.git
synced 2025-10-27 16:59:25 +00:00
Implement basic API server
This commit is contained in:
37
main.py
37
main.py
@@ -1,8 +1,11 @@
|
||||
# Main script
|
||||
import logging
|
||||
import signal
|
||||
import sys
|
||||
from time import sleep
|
||||
|
||||
from core.cleanup import CleanupTimer
|
||||
from core.constants import MAX_SPOT_AGE_SEC
|
||||
from core.constants import MAX_SPOT_AGE_SEC, WEB_SERVER_PORT
|
||||
from providers.dxcluster import DXCluster
|
||||
from providers.gma import GMA
|
||||
from providers.hema import HEMA
|
||||
@@ -11,17 +14,32 @@ from providers.pota import POTA
|
||||
from providers.sota import SOTA
|
||||
from providers.wwbota import WWBOTA
|
||||
from providers.wwff import WWFF
|
||||
from server.webserver import WebServer
|
||||
|
||||
# Main control flag, switch False to stop main application thread
|
||||
run = True
|
||||
|
||||
# Shutdown function
|
||||
def shutdown(sig, frame):
|
||||
print("Stopping program, this may take a few seconds...")
|
||||
logging.info("Stopping program, this may take a few seconds...")
|
||||
global run
|
||||
run = False
|
||||
for p in providers: p.stop()
|
||||
cleanup_timer.stop()
|
||||
|
||||
|
||||
# Main function
|
||||
if __name__ == '__main__':
|
||||
print("Starting...")
|
||||
# Set up logging
|
||||
root = logging.getLogger()
|
||||
root.setLevel(logging.INFO)
|
||||
handler = logging.StreamHandler(sys.stdout)
|
||||
handler.setLevel(logging.INFO)
|
||||
formatter = logging.Formatter("%(message)s")
|
||||
handler.setFormatter(formatter)
|
||||
root.addHandler(handler)
|
||||
logging.info("Starting...")
|
||||
|
||||
# Shut down gracefully on SIGINT
|
||||
signal.signal(signal.SIGINT, shutdown)
|
||||
|
||||
@@ -48,13 +66,14 @@ if __name__ == '__main__':
|
||||
cleanup_timer = CleanupTimer(spot_list=spot_list, cleanup_interval=60, max_spot_age=MAX_SPOT_AGE_SEC)
|
||||
cleanup_timer.start()
|
||||
|
||||
# Todo serve spot API
|
||||
# Todo spot API arguments e.g. "since" based on received_time of spots, sources, sigs, dx cont, dxcc, de cont, band, mode, filter out qrt, filter pre-qsy
|
||||
# Todo serve status API
|
||||
# Todo serve apidocs
|
||||
# Todo serve website
|
||||
# Set up web server
|
||||
web_server = WebServer(spot_list=spot_list, port=WEB_SERVER_PORT)
|
||||
web_server.start()
|
||||
|
||||
print("Startup complete.")
|
||||
logging.info("Startup complete.")
|
||||
|
||||
while run:
|
||||
sleep(1)
|
||||
|
||||
|
||||
# TODO NOTES FOR NGINX REVERSE PROXY
|
||||
|
||||
Reference in New Issue
Block a user