40 lines
1.0 KiB
Python
40 lines
1.0 KiB
Python
"""WSGI entrypoint for production deployments.
|
|
|
|
This module is what Gunicorn imports.
|
|
We also start background tasks that are normally started in run.py:
|
|
- UDP trigger listener
|
|
- event expiry monitor
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import os
|
|
|
|
from app import create_app
|
|
from models import db
|
|
from sockets import start_event_monitor
|
|
from udp_listener import start_udp_listener
|
|
|
|
|
|
app = create_app()
|
|
|
|
# Ensure DB exists on first boot (SQLite-based default).
|
|
with app.app_context():
|
|
db.create_all()
|
|
|
|
|
|
def _start_background_tasks() -> None:
|
|
start_udp_listener(app)
|
|
start_event_monitor(app)
|
|
|
|
|
|
# With Gunicorn the module can be imported multiple times (worker processes).
|
|
# This app is designed for LAN/kiosk setups; we intentionally run a single worker
|
|
# by default to avoid duplicated UDP listeners.
|
|
if os.environ.get("SYNCPLAYER_START_TASKS", "1") in ("1", "true", "yes"):
|
|
_start_background_tasks()
|
|
|
|
|
|
# Note: create_app() calls socketio.init_app(app), which wraps app.wsgi_app.
|
|
# For Gunicorn, we can export the Flask app directly.
|