瀏覽代碼

add auto_open_webbrowser param in `start_server`

wangweimin 5 年之前
父節點
當前提交
7da1b91ca7
共有 1 個文件被更改,包括 6 次插入2 次删除
  1. 6 2
      pywebio/platform/tornado.py

+ 6 - 2
pywebio/platform/tornado.py

@@ -85,6 +85,7 @@ def _setup_server(webio_handler, port=0, host='', **tornado_app_settings):
 
 
 
 
 def start_server(target, port=0, host='', debug=False,
 def start_server(target, port=0, host='', debug=False,
+                 auto_open_webbrowser=False,
                  websocket_max_message_size=None,
                  websocket_max_message_size=None,
                  websocket_ping_interval=None,
                  websocket_ping_interval=None,
                  websocket_ping_timeout=None,
                  websocket_ping_timeout=None,
@@ -98,6 +99,7 @@ def start_server(target, port=0, host='', debug=False,
         the server will listen on all IP addresses associated with the name.
         the server will listen on all IP addresses associated with the name.
         set empty string or to listen on all available interfaces.
         set empty string or to listen on all available interfaces.
     :param bool debug: Tornado debug mode
     :param bool debug: Tornado debug mode
+    :param bool auto_open_webbrowser: Whether or not auto open web browser when server is started.
     :param int websocket_max_message_size: Max bytes of a message which Tornado can accept.
     :param int websocket_max_message_size: Max bytes of a message which Tornado can accept.
         Messages larger than the ``websocket_max_message_size`` (default 10MiB) will not be accepted.
         Messages larger than the ``websocket_max_message_size`` (default 10MiB) will not be accepted.
     :param int websocket_ping_interval: If set to a number, all websockets will be pinged every n seconds.
     :param int websocket_ping_interval: If set to a number, all websockets will be pinged every n seconds.
@@ -120,7 +122,9 @@ def start_server(target, port=0, host='', debug=False,
             tornado_app_settings[opt] = kwargs[opt]
             tornado_app_settings[opt] = kwargs[opt]
 
 
     handler = webio_handler(target)
     handler = webio_handler(target)
-    _setup_server(webio_handler=handler, port=port, host=host, **tornado_app_settings)
+    _, port = _setup_server(webio_handler=handler, port=port, host=host, **tornado_app_settings)
+    if auto_open_webbrowser:
+        tornado.ioloop.IOLoop.current().spawn_callback(open_webbrowser_on_server_started, host, port)
     tornado.ioloop.IOLoop.current().start()
     tornado.ioloop.IOLoop.current().start()
 
 
 
 
@@ -136,7 +140,7 @@ def start_server_in_current_thread_session():
         def open(self):
         def open(self):
             if SingletonWSHandler.session is None:
             if SingletonWSHandler.session is None:
                 SingletonWSHandler.session = DesignatedThreadSession(thread, on_task_message=self.send_msg_to_client,
                 SingletonWSHandler.session = DesignatedThreadSession(thread, on_task_message=self.send_msg_to_client,
-                                                                   loop=asyncio.get_event_loop())
+                                                                     loop=asyncio.get_event_loop())
                 websocket_conn_opened.set()
                 websocket_conn_opened.set()
             else:
             else:
                 self.close()
                 self.close()