62 lines
1.5 KiB
Python
62 lines
1.5 KiB
Python
"""
|
|
TiniX Story 1.0 - Entry Point
|
|
Khởi động cả Gradio UI và FastAPI server
|
|
"""
|
|
import os
|
|
import sys
|
|
import threading
|
|
import logging
|
|
|
|
logging.basicConfig(
|
|
level=logging.INFO,
|
|
format="%(asctime)s [%(levelname)s] %(name)s: %(message)s"
|
|
)
|
|
logger = logging.getLogger("run")
|
|
|
|
|
|
def start_gradio():
|
|
"""Khởi động Gradio UI trên port 7860"""
|
|
try:
|
|
from app import main
|
|
main()
|
|
except Exception as e:
|
|
logger.error(f"Gradio startup failed: {e}")
|
|
sys.exit(1)
|
|
|
|
|
|
def start_fastapi():
|
|
"""Khởi động FastAPI server trên port 8000"""
|
|
try:
|
|
import uvicorn
|
|
from main_api import app
|
|
uvicorn.run(app, host="0.0.0.0", port=8000, log_level="info")
|
|
except Exception as e:
|
|
logger.error(f"FastAPI startup failed: {e}")
|
|
sys.exit(1)
|
|
|
|
|
|
def main():
|
|
mode = os.getenv("TINIX_MODE", "all").lower()
|
|
|
|
if mode == "api":
|
|
logger.info("Starting TiniX Story in API-only mode (port 8000)")
|
|
start_fastapi()
|
|
elif mode == "ui":
|
|
logger.info("Starting TiniX Story in Gradio UI mode (port 7860)")
|
|
start_gradio()
|
|
else:
|
|
logger.info("Starting TiniX Story - All services")
|
|
logger.info(" → FastAPI: http://localhost:8000")
|
|
logger.info(" → Gradio UI: http://localhost:7860")
|
|
|
|
# FastAPI in background thread
|
|
api_thread = threading.Thread(target=start_fastapi, daemon=True)
|
|
api_thread.start()
|
|
|
|
# Gradio in main thread (blocks)
|
|
start_gradio()
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|