Jelajahi Sumber

rename platform.flask.`_setup_event_loop` to `run_event_loop`

wangweimin 5 tahun lalu
induk
melakukan
b2a6fb9b03
2 mengubah file dengan 12 tambahan dan 5 penghapusan
  1. 2 2
      docs/guide.rst
  2. 10 3
      pywebio/platform/flask.py

+ 2 - 2
docs/guide.rst

@@ -417,7 +417,7 @@ PyWebIO的会话实现默认是基于线程的,用户每打开一个和服务
     from flask import Flask, send_from_directory
     from pywebio import STATIC_PATH
     from pywebio.output import *
-    from pywebio.platform.flask import webio_view, setup_event_loop
+    from pywebio.platform.flask import webio_view, run_event_loop
     from pywebio.session import run_asyncio_coroutine
 
     async def hello_word():
@@ -435,7 +435,7 @@ PyWebIO的会话实现默认是基于线程的,用户每打开一个和服务
     def serve_static_file(static_file='index.html'):
         return send_from_directory(STATIC_PATH, static_file)
     
-    threading.Thread(target=setup_event_loop, daemon=True).start()
+    threading.Thread(target=run_event_loop, daemon=True).start()
     app.run(host='localhost', port='80')
 
 最后,使用PyWebIO编写的协程函数不支持Script mode,总是需要使用 ``start_server`` 来启动一个服务或者集成进Web框架来调用。

+ 10 - 3
pywebio/platform/flask.py

@@ -167,10 +167,17 @@ def webio_view(target, session_expire_seconds=DEFAULT_SESSION_EXPIRE_SECONDS, al
     return view_func
 
 
-def _setup_event_loop():
+def run_event_loop(debug=False):
+    """运行事件循环
+
+    基于协程的会话在启动Flask服务器之前需要启动一个单独的线程来运行事件循环。
+
+    :param debug: Set the debug mode of the event loop.
+       See also: https://docs.python.org/3/library/asyncio-dev.html#asyncio-debug-mode
+    """
     global _event_loop
     _event_loop = asyncio.new_event_loop()
-    _event_loop.set_debug(True)
+    _event_loop.set_debug(debug)
     asyncio.set_event_loop(_event_loop)
     _event_loop.run_forever()
 
@@ -212,6 +219,6 @@ def start_server(target, port=8080, host='localhost',
         return send_from_directory(STATIC_PATH, static_file)
 
     if not disable_asyncio and get_session_implement() is CoroutineBasedSession:
-        threading.Thread(target=_setup_event_loop, daemon=True).start()
+        threading.Thread(target=run_event_loop, daemon=True).start()
 
     app.run(host=host, port=port, debug=debug, **flask_options)