Spaces:
Running
Running
File size: 1,682 Bytes
1e4fc28 |
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 |
# main.py
import os
import logging
import warnings
# Suppress protobuf version warnings (they're harmless but noisy)
warnings.filterwarnings("ignore", category=UserWarning, module="google.protobuf")
os.environ["PROTOCOL_BUFFERS_PYTHON_IMPLEMENTATION"] = "python"
# Make PROJECT_ROOT explicit so module-level code in the container works reliably
PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
# Ensure logs dir exists
LOG_DIR = os.path.join(PROJECT_ROOT, "logs")
os.makedirs(LOG_DIR, exist_ok=True)
# Configure file logging (keeps container stdout clean and persists errors)
logfile = os.path.join(LOG_DIR, "app.log")
handler = logging.FileHandler(logfile)
handler.setLevel(logging.INFO)
formatter = logging.Formatter("%(asctime)s [%(levelname)s] %(module)s: %(message)s")
handler.setFormatter(formatter)
root_logger = logging.getLogger()
# Add handler only if not already added (avoids duplicates in dev reload)
if not any(isinstance(h, logging.FileHandler) and getattr(h, "baseFilename", "") == logfile for h in root_logger.handlers):
root_logger.addHandler(handler)
# Import factory after logging and directory setup so imports don't crash during bootstrap
from app import create_app
# Create app (allow env-driven config if needed)
app = create_app()
if __name__ == "__main__":
# allow overriding host/port via env (useful in Docker)
host = os.environ.get("HOST", "0.0.0.0")
port = int(os.environ.get("PORT", os.environ.get("FLASK_RUN_PORT", 5000)))
debug = os.environ.get("FLASK_DEBUG", "0") in ("1", "true", "True")
app.logger.info("Starting app on %s:%s (debug=%s)", host, port, debug)
app.run(host=host, port=port, debug=debug)
|