Files
SonicForgeStudio/main.py
T

36 lines
1.1 KiB
Python

"""Entry point cho daw_engine.exe (PyInstaller — spec desktop 2026-08-08).
Chạy FastAPI backend trên 127.0.0.1:8000 (Dual-Process Desktop Architecture).
KHÔNG tự mở browser — Tauri shell (window url=localhost:8000) đảm nhiệm.
SINGLE-INSTANCE: nếu port 8000 đã có server → EXIT ngay (bug 09:55 — mỗi lần mở
app spawn thêm daw_engine → nhiều instance + port chiếm → màn đen)."""
import os
import socket
import sys
os.environ.setdefault("SFDATA_DIR", os.path.join(os.path.expanduser("~"), "SonicForgeDAW"))
import uvicorn # noqa: E402
PORT = 8000
def _port_in_use(port: int) -> bool:
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
s.bind(("127.0.0.1", port))
return False
except OSError:
return True
finally:
s.close()
except Exception:
return False
if __name__ == "__main__":
if _port_in_use(PORT):
# Server đang chạy (instance khác — window sẽ dùng nó). KHÔNG spawn thêm.
sys.exit(0)
uvicorn.run("app.main:app", host="127.0.0.1", port=PORT, log_level="warning")