36 lines
1.1 KiB
Python
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")
|