Skip to content
Snippets Groups Projects
Commit d5377b42 authored by Sara Savanovic Djordjevic's avatar Sara Savanovic Djordjevic
Browse files

add: server termination on q

parent 38d1d670
No related branches found
No related tags found
1 merge request!1Server
No preview for this file type
......@@ -6,9 +6,12 @@ from consts import DB_NAME, COLLECTION, MONGO_URI, MONGO_CERT_PATH, SSL_CERT_PAT
from map.get_markers import get_markers
import atexit
import ssl
import keyboard
app = Flask(__name__)
terminate_server = 0
"""
# Initialise MongoDB connection
try:
client = MongoClient(MONGO_URI,
......@@ -21,7 +24,8 @@ try:
print("Connected to MongoDB")
except Exception as e:
print(f"Failed to connect to MongoDB: {e}")
"""
# Define HTTP class
class IceHTTP(BaseHTTPRequestHandler):
def do_GET(self):
......@@ -29,25 +33,30 @@ class IceHTTP(BaseHTTPRequestHandler):
self.send_response(200)
self.send_header("Content-type", "text/plain")
self.end_headers()
self.wfile.write(b"Root path hit!")
elif self.path == '/update_map':
# Fetch marker data
markers_data, resp_code = get_markers()
# Set headers
self.send_response(resp_code)
self.send_header("Content-type", "application/json")
self.end_headers()
# Write the JSON data directly to the response
self.wfile.write(markers_data.encode('utf-8'))
# Write the JSON data to response object
self.wfile.write(markers_data)
elif self.path == '/test_endpoint':
self.send_response(200)
self.send_header("Content-type", "text/plain")
self.end_headers()
self.wfile.write(b"Test path hit!")
# Listen for pressing of q key to terminate server
def on_key_press(server, event):
if event.name == 'q':
print('Terminating server...')
server.server_close()
keyboard.unhook_all()
quit()
# Start a server on port 8443 using defined HTTP class
# Start a server on port 8443 using self defined HTTP class
if __name__ == "__main__":
print("Starting server on port ", PORT)
try:
......@@ -60,14 +69,11 @@ if __name__ == "__main__":
server.socket = ssl_context.wrap_socket(server.socket, server_side=True)
print("Server running on port ", PORT)
server.serve_forever()
except Exception as e:
print(f"Failed to start server on port {PORT}: {e}")
# Register key press event handler
keyboard.on_press(lambda event: on_key_press(server, event))
def on_termination():
print("Server is terminating.")
server.serve_forever()
# Register the function to be called on exit
atexit.register(on_termination)
\ No newline at end of file
except Exception as e:
print(f"Failed to start server on port {PORT}: {e}")
No preview for this file type
......@@ -28,6 +28,7 @@ def get_markers():
MarkerTemplate(measurement3, 20.0-measurement3.accuracy, "Yellow"),
]
# NB: return test data as JSON
return json.dumps([marker.to_dict() for marker in testData]), 200
except Exception as e:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment