24 lines
505 B
Python
24 lines
505 B
Python
import os
|
|
import socket
|
|
|
|
import uvicorn
|
|
|
|
|
|
def listen_port() -> int:
|
|
chosen = os.environ.get("RAPTD_PORT", "").strip()
|
|
if chosen:
|
|
return int(chosen)
|
|
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as sock:
|
|
sock.bind(("127.0.0.1", 0))
|
|
return sock.getsockname()[1]
|
|
|
|
|
|
def main() -> None:
|
|
port = listen_port()
|
|
print(f"http://127.0.0.1:{port}", flush=True)
|
|
uvicorn.run("server.app:app", host="127.0.0.1", port=port)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
main()
|