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()