pywebio.session — More control to session

pywebio.session.run_async(coro_obj)[源代码]

异步运行协程对象。协程中依然可以调用 PyWebIO 交互函数。 仅能在 基于协程 的会话上下文中调用

参数

coro_obj – 协程对象

返回

An instance of TaskHandle is returned, which can be used later to close the task.

pywebio.session.run_asyncio_coroutine(coro_obj)[源代码]

若会话线程和运行事件的线程不是同一个线程,需要用 run_asyncio_coroutine 来运行asyncio中的协程。 仅能在 基于协程 的会话上下文中调用。

参数

coro_obj – 协程对象

pywebio.session.register_thread(thread: threading.Thread)[源代码]

注册线程,以便在线程内调用 PyWebIO 交互函数。仅能在默认的基于线程的会话上下文中调用。

参数

thread (threading.Thread) – 线程对象

pywebio.session.defer_call(func)[源代码]

设置会话结束时调用的函数。无论是用户主动关闭会话还是任务结束会话关闭,设置的函数都会被运行。 可以用于资源清理等工作。 在会话中可以多次调用 defer_call() ,会话结束后将会顺序执行设置的函数。

defer_call 同样支持以装饰器的方式使用:

@defer_call
def cleanup():
   pass
参数

func – 话结束时调用的函数

注意

通过 defer_call() 设置的函数被调用时会话已经关闭,所以在函数体内不可以调用 PyWebIO 的交互函数

pywebio.session.hold()[源代码]

保持会话,直到用户关闭浏览器, 此时函数抛出 SessionClosedException 异常。

注意⚠️:在 基于协程 的会话上下文中,需要使用 await hold() 语法来进行调用。

pywebio.session.get_info()[源代码]

获取当前会话的相关信息

返回

表示会话信息的对象,属性有:

  • user_agent : 表示用户浏览器信息的对象,属性有

    • is_mobile (bool): 用户使用的设备是否为手机 (比如 iPhone, Android phones, Blackberry, Windows Phone 等设备)

    • is_tablet (bool): 用户使用的设备是否为平板 (比如 iPad, Kindle Fire, Nexus 7 等设备)

    • is_pc (bool): 用户使用的设备是否为桌面电脑 (比如运行 Windows, OS X, Linux 的设备)

    • is_touch_capable (bool): 用户使用的设备是否支持触控

    • browser.family (str): 浏览器家族. 比如 ‘Mobile Safari’

    • browser.version (tuple): 浏览器版本元组. 比如 (5, 1)

    • browser.version_string (str): 浏览器版本字符串. 比如 ‘5.1’

    • os.family (str): 操作系统家族. 比如 ‘iOS’

    • os.version (tuple): 操作系统版本元组. 比如 (5, 1)

    • os.version_string (str): 操作系统版本字符串. 比如 ‘5.1’

    • device.family (str): 设备家族. 比如 ‘iPhone’

    • device.brand (str): 设备品牌. 比如 ‘Apple’

    • device.model (str): 设备幸好. 比如 ‘iPhone’

  • user_language (str): 用户操作系统使用的语言. 比如 'zh-CN'

  • server_host (str): 当前会话的服务器host,包含域名和端口,端口为80时可以被省略

  • origin (str): 当前用户的页面地址. 包含 协议、主机、端口 部分. 比如 'http://localhost:8080' . 可能为空,但保证当用户的页面地址不在当前服务器下(即 主机、端口部分和 server_host 不一致)时有值.

  • user_ip (str): 用户的ip地址.

  • backend (str): PyWebIO使用的Web框架名. 目前可用值有 'tornado' , 'flask' , 'django' , 'aiohttp' .

  • request (object): 创建当前会话时的Web请求对象. 根据PyWebIO使用的后端Server不同,request 的类型也不同:

返回值的 user_agent 属性是通过 user-agents 库进行解析生成的。参见 https://github.com/selwin/python-user-agents#usage

class pywebio.session.coroutinebased.TaskHandle(close, closed)[源代码]

协程任务句柄

close()[源代码]

关闭协程任务

closed()[源代码]

返回任务是否关闭