瀏覽代碼

Merge pull request #90352 from Faless/web/serve_fix_browser_order

[Web] Fix browser opening too early with `serve.py`
Rémi Verschelde 1 年之前
父節點
當前提交
d1424135d1
共有 1 個文件被更改,包括 16 次插入4 次删除
  1. 16 4
      platform/web/serve.py

+ 16 - 4
platform/web/serve.py

@@ -6,7 +6,7 @@ import os
 import socket
 import subprocess
 import sys
-from http.server import HTTPServer, SimpleHTTPRequestHandler, test  # type: ignore
+from http.server import HTTPServer, SimpleHTTPRequestHandler
 from pathlib import Path
 
 
@@ -38,12 +38,24 @@ def shell_open(url):
 def serve(root, port, run_browser):
     os.chdir(root)
 
+    address = ("", port)
+    httpd = DualStackServer(address, CORSRequestHandler)
+
+    url = f"http://127.0.0.1:{port}"
     if run_browser:
         # Open the served page in the user's default browser.
-        print("Opening the served URL in the default browser (use `--no-browser` or `-n` to disable this).")
-        shell_open(f"http://127.0.0.1:{port}")
+        print(f"Opening the served URL in the default browser (use `--no-browser` or `-n` to disable this): {url}")
+        shell_open(url)
+    else:
+        print(f"Serving at: {url}")
 
-    test(CORSRequestHandler, DualStackServer, port=port)
+    try:
+        httpd.serve_forever()
+    except KeyboardInterrupt:
+        print("\nKeyboard interrupt received, stopping server.")
+    finally:
+        # Clean-up server
+        httpd.server_close()
 
 
 if __name__ == "__main__":