wangweimin 5 سال پیش
والد
کامیت
d45f59e869
2فایلهای تغییر یافته به همراه9 افزوده شده و 5 حذف شده
  1. 3 1
      docs/guide.rst
  2. 6 4
      pywebio/session/__init__.py

+ 3 - 1
docs/guide.rst

@@ -251,7 +251,7 @@ PyWebIO 支持在多线程环境中使用。
 **Server mode**
 
 Server mode 下,由于对多会话的支持,如果需要在新创建的线程中使用PyWebIO的交互函数,需要手动调用 `register_thread(thread) <pywebio.session.register_thread>` 对新进程进行注册。
-如果新创建的线程中没有使用到PyWebIO的交互函数,则无需注册。在没有使用 `register_thread(thread) <pywebio.session.register_thread>` 注册的线程调用PyWebIO的交互函数将会产生 `SessionNotFoundException <pywebio.exceptions.SessionNotFoundException>` 异常。
+如果新创建的线程中没有使用到PyWebIO的交互函数,则无需注册。在没有使用 `register_thread(thread) <pywebio.session.register_thread>` 注册的线程不受会话管理,其调用PyWebIO的交互函数将会产生 `SessionNotFoundException <pywebio.exceptions.SessionNotFoundException>` 异常。
 当会话的任务函数和会话内通过 `register_thread(thread) <pywebio.session.register_thread>` 注册的线程都结束运行时,会话关闭。
 
 会话的结束
@@ -413,6 +413,8 @@ PyWebIO的会话实现默认是基于线程的,用户每打开一个和服务
    在基于协程的会话中, :doc:`pywebio.input </input>` 模块中的输入函数都需要使用 ``await`` 语法来获取返回值,
    忘记使用 ``await`` 将会是在使用基于协程的会话时常出现的错误。
 
+   协程会话中,同样需要使用 ``await`` 语法来进行调用函数还有 :func:`pywebio.session.hold()`
+
 与Web框架进行集成
 ^^^^^^^^^^^^^^^^^^^^^
 

+ 6 - 4
pywebio/session/__init__.py

@@ -118,7 +118,9 @@ def next_client_event():
 @chose_impl
 def hold():
     """保持会话,直到用户关闭浏览器,
-    此时函数抛出 `SessionClosedException <pywebio.exceptions.SessionClosedException>` 异常
+    此时函数抛出 `SessionClosedException <pywebio.exceptions.SessionClosedException>` 异常。
+
+    注意⚠️:在 :ref:`基于协程 <coroutine_based_session>` 的会话上下文中,需要使用 ``await hold()`` 语法来进行调用。
     """
     while True:
         yield next_client_event()
@@ -126,7 +128,7 @@ def hold():
 
 @check_session_impl(CoroutineBasedSession)
 def run_async(coro_obj):
-    """异步运行协程对象。协程中依然可以调用 PyWebIO 交互函数。 仅能在基于协程的会话上下文中调用
+    """异步运行协程对象。协程中依然可以调用 PyWebIO 交互函数。 仅能在 :ref:`基于协程 <coroutine_based_session>` 的会话上下文中调用
 
     :param coro_obj: 协程对象
     :return: An instance of  `TaskHandle <pywebio.session.coroutinebased.TaskHandle>` is returned, which can be used later to close the task.
@@ -136,7 +138,7 @@ def run_async(coro_obj):
 
 @check_session_impl(CoroutineBasedSession)
 async def run_asyncio_coroutine(coro_obj):
-    """若会话线程和运行事件的线程不是同一个线程,需要用 run_asyncio_coroutine 来运行asyncio中的协程。 仅能在基于协程的会话上下文中调用
+    """若会话线程和运行事件的线程不是同一个线程,需要用 run_asyncio_coroutine 来运行asyncio中的协程。 仅能在 :ref:`基于协程 <coroutine_based_session>` 的会话上下文中调用
 
     :param coro_obj: 协程对象
     """
@@ -145,7 +147,7 @@ async def run_asyncio_coroutine(coro_obj):
 
 @check_session_impl(ThreadBasedSession)
 def register_thread(thread: threading.Thread):
-    """注册线程,以便在线程内调用 PyWebIO 交互函数。仅能在基于线程的会话上下文中调用
+    """注册线程,以便在线程内调用 PyWebIO 交互函数。仅能在默认的基于线程的会话上下文中调用
 
     :param threading.Thread thread: 线程对象
     """