运行 I/O 密集型任务#

NiceGUI 提供了一个 io_bound 函数,用于在单独的线程中运行 I/O 密集型任务。对于那些长时间运行的 I/O 操作而言,这非常有用,否则这些操作会阻塞事件循环并使 UI 无响应。该函数返回一个可以被等待的 future。

import requests
from nicegui import run, ui

async def handle_click():
    URL = 'https://httpbin.org/delay/1'
    response = await run.io_bound(requests.get, URL, timeout=3)
    ui.notify(f'Downloaded {len(response.content)} bytes')

ui.button('Download', on_click=handle_click)

# ui.run()
<nicegui.elements.button.Button at 0x7fa7dce0feb0>