/ dev / server.py
server.py
 1  """
 2  Runs MLflow server, gateway, and UI in development mode.
 3  """
 4  
 5  import os
 6  import socket
 7  import subprocess
 8  import sys
 9  import time
10  
11  
12  def random_port() -> int:
13      with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
14          s.bind(("", 0))
15          return int(s.getsockname()[1])
16  
17  
18  def main() -> None:
19      gateway_port = random_port()
20      gateway_host = "localhost"
21      with (
22          subprocess.Popen([
23              sys.executable,
24              "-m",
25              "mlflow",
26              "gateway",
27              "start",
28              "--config-path",
29              "examples/gateway/openai/config.yaml",
30              "--host",
31              gateway_host,
32              "--port",
33              str(gateway_port),
34          ]) as gateway,
35          subprocess.Popen(
36              [
37                  sys.executable,
38                  "-m",
39                  "mlflow",
40                  "server",
41                  "--dev",
42              ],
43              env={
44                  **os.environ,
45                  "MLFLOW_DEPLOYMENTS_TARGET": f"http://{gateway_host}:{gateway_port}",
46              },
47          ) as server,
48          subprocess.Popen(
49              [
50                  "yarn",
51                  "start",
52              ],
53              cwd="mlflow/server/js",
54          ) as ui,
55      ):
56          while True:
57              try:
58                  time.sleep(1)
59              except KeyboardInterrupt:
60                  gateway.terminate()
61                  server.terminate()
62                  ui.terminate()
63                  break
64  
65  
66  if __name__:
67      main()