-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.py
More file actions
73 lines (61 loc) · 2.14 KB
/
app.py
File metadata and controls
73 lines (61 loc) · 2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import os
import sys
import logging
from dotenv import load_dotenv
from app import create_app, socketio
from app.config.config import config
# Load environment variables
load_dotenv()
# Create Flask application
app = create_app()
# Configure logging
logger = logging.getLogger(__name__)
@app.before_first_request
def before_first_request():
"""Initialize application before first request."""
try:
# Validate configuration
if not config.validate():
logger.error("Invalid configuration. Please check your settings.")
sys.exit(1)
# Initialize services
from app.services.detection_service import DetectionService
from app.services.localization_service import LocalizationService
from app.services.drone_service import DroneService
from app.services.lora_service import LoRaService
DetectionService.initialize()
LocalizationService.initialize()
DroneService.initialize()
LoRaService.initialize()
logger.info("All services initialized successfully")
except Exception as e:
logger.error(f"Error during initialization: {e}")
sys.exit(1)
@app.route('/health')
def health_check():
"""Basic health check endpoint."""
return {'status': 'healthy'}, 200
if __name__ == '__main__':
host = config.get('server.host', '0.0.0.0')
port = config.get('server.port', 5000)
debug = config.get('server.debug', False)
# Configure SSL if in production
ssl_context = None
if os.getenv('FLASK_ENV') == 'production':
ssl_cert = config.get('security.ssl_cert')
ssl_key = config.get('security.ssl_key')
if ssl_cert and ssl_key:
ssl_context = (ssl_cert, ssl_key)
try:
logger.info(f"Starting server on {host}:{port}")
socketio.run(
app,
host=host,
port=port,
debug=debug,
use_reloader=config.get('development.hot_reload', False),
ssl_context=ssl_context
)
except Exception as e:
logger.error(f"Error starting server: {e}")
sys.exit(1)