Refactor health check functionality in POE project. Removed readiness endpoint from health_check.py and improved error handling for sensor status retrieval. Updated logging to reduce noise and adjusted health check server startup process in main.py. Modified Nomad job configuration for network mode and resource allocation, enhancing overall system performance and stability.
This commit is contained in:
65
main.py
65
main.py
@ -14,66 +14,31 @@ Author: POE Project
|
||||
import time
|
||||
import logging
|
||||
import sys
|
||||
import signal
|
||||
from health_check import HealthCheckServer
|
||||
from sensor_bridge import main_loop
|
||||
|
||||
# Global health server for cleanup
|
||||
health_server = None
|
||||
|
||||
def signal_handler(signum, frame):
|
||||
"""Handle shutdown signals gracefully"""
|
||||
global health_server
|
||||
logging.info(f"Received signal {signum}, shutting down gracefully...")
|
||||
if health_server:
|
||||
health_server.stop()
|
||||
sys.exit(0)
|
||||
import os
|
||||
|
||||
if __name__ == "__main__":
|
||||
# Setup logging
|
||||
# Setup logging first
|
||||
logging.basicConfig(
|
||||
level=logging.INFO,
|
||||
format='%(asctime)s - %(levelname)s - %(message)s',
|
||||
handlers=[
|
||||
logging.StreamHandler(sys.stdout),
|
||||
]
|
||||
handlers=[logging.StreamHandler(sys.stdout)]
|
||||
)
|
||||
|
||||
# Setup signal handlers
|
||||
signal.signal(signal.SIGTERM, signal_handler)
|
||||
signal.signal(signal.SIGINT, signal_handler)
|
||||
|
||||
logging.info("POE Sensor Bridge starting up...")
|
||||
|
||||
try:
|
||||
# Start health check server first
|
||||
logging.info("Starting health check server...")
|
||||
health_server = HealthCheckServer()
|
||||
# Import after logging is setup to avoid circular import issues
|
||||
from sensor_bridge import main_loop
|
||||
|
||||
if health_server.start():
|
||||
logging.info("Health check server started successfully")
|
||||
|
||||
# Give health check server time to be ready
|
||||
time.sleep(3)
|
||||
|
||||
# Verify health check is working
|
||||
if health_server.is_running():
|
||||
logging.info("Health check server verified as running")
|
||||
logging.info("Starting main sensor loop...")
|
||||
main_loop()
|
||||
else:
|
||||
logging.error("Health check server failed to start properly")
|
||||
sys.exit(1)
|
||||
else:
|
||||
logging.error("Failed to start health check server")
|
||||
sys.exit(1)
|
||||
|
||||
except KeyboardInterrupt:
|
||||
logging.info("Received keyboard interrupt, shutting down...")
|
||||
# Give the system a moment to initialize
|
||||
time.sleep(2)
|
||||
|
||||
logging.info("Starting main sensor loop...")
|
||||
main_loop()
|
||||
|
||||
except ImportError as e:
|
||||
logging.error(f"Import error: {e}")
|
||||
sys.exit(1)
|
||||
except Exception as e:
|
||||
logging.error(f"Fatal error: {e}", exc_info=True)
|
||||
sys.exit(1)
|
||||
finally:
|
||||
if health_server:
|
||||
health_server.stop()
|
||||
logging.info("POE Sensor Bridge shutdown complete")
|
||||
sys.exit(1)
|
Reference in New Issue
Block a user