Initial commit: Location Management Flask app

This commit is contained in:
ske087
2026-02-26 19:24:17 +02:00
commit 7a22575dab
52 changed files with 3481 additions and 0 deletions

41
run.py Normal file
View File

@@ -0,0 +1,41 @@
"""Application entry point.
Run with:
python run.py
Or for production:
gunicorn -w 1 -k eventlet "run:create_socketio_app()"
"""
import os
import threading
import time
from app import create_app, socketio
from app.services.board_service import poll_all_boards
app = create_app(os.environ.get("FLASK_ENV", "development"))
def _background_poller():
"""Poll all boards in a loop every BOARD_POLL_INTERVAL seconds."""
interval = app.config.get("BOARD_POLL_INTERVAL", 10)
while True:
try:
poll_all_boards(app)
except Exception as exc:
app.logger.warning("Poller error: %s", exc)
time.sleep(interval)
def create_socketio_app():
"""WSGI callable for gunicorn / production."""
return socketio.middleware(app)
if __name__ == "__main__":
# Start background board poller
t = threading.Thread(target=_background_poller, daemon=True)
t.start()
port = int(os.environ.get("PORT", 5000))
socketio.run(app, host="0.0.0.0", port=port, debug=app.debug, allow_unsafe_werkzeug=True)