ihsg-forecasting-dashboard / scripts /run_web_dashboard.py
ElvssYo's picture
Prepare IHSG dashboard for public deployment
904458e
Raw
History Blame Contribute Delete
1.47 kB
"""Run the custom non-Streamlit IHSG dashboard."""
from __future__ import annotations
import argparse
import logging
import os
from pathlib import Path
import sys
PROJECT_ROOT = Path(__file__).resolve().parents[1]
if str(PROJECT_ROOT) not in sys.path:
sys.path.insert(0, str(PROJECT_ROOT))
logger = logging.getLogger(__name__)
def parse_args() -> argparse.Namespace:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--host", default=os.environ.get("DASHBOARD_HOST", "0.0.0.0"))
parser.add_argument(
"--port",
type=int,
default=int(os.environ.get("PORT", os.environ.get("DASHBOARD_PORT", "7860"))),
)
parser.add_argument("--static-dir", type=Path, default=Path("web"))
return parser.parse_args()
def main() -> int:
from kag.logging import configure_logging
from kag.web.api import create_server
args = parse_args()
configure_logging()
if not args.static_dir.exists():
logger.error("Static web directory does not exist: %s", args.static_dir)
return 1
server = create_server(host=args.host, port=args.port, static_dir=args.static_dir)
logger.info("Custom dashboard running at http://%s:%s", args.host, args.port)
try:
server.serve_forever()
except KeyboardInterrupt:
logger.info("Shutting down dashboard server")
finally:
server.server_close()
return 0
if __name__ == "__main__":
sys.exit(main())