import subprocess, time, urllib.request, os, sys

PROJ_DIR = r"C:\Users\25044\Desktop\Proj\天璇"
PYTHON_EXE = os.path.join(PROJ_DIR, "runtime", "python", "python.exe")
os.chdir(PROJ_DIR)

server = subprocess.Popen(
    [PYTHON_EXE, "manage.py", "runserver", "127.0.0.1:8765", "--noreload"],
    stdout=subprocess.DEVNULL,
    stderr=subprocess.DEVNULL
)

print(f"SERVER_PID={server.pid}")

# Poll with backoff: fast early, then slower
deadline = time.time() + 60
attempt = 0
while time.time() < deadline:
    attempt += 1
    try:
        resp = urllib.request.urlopen("http://127.0.0.1:8765/", timeout=3)
        if resp.status == 200:
            print("SERVER_READY")
            sys.exit(0)
    except Exception as e:
        if attempt % 10 == 0:
            print(f"WAITING... attempt={attempt} err={type(e).__name__}")
        time.sleep(1)

print("SERVER_START_TIMEOUT")
server.kill()
sys.exit(1)
