2

目前,我正在尝试将 Kivy、Socket.io 作为 Trio 的协程运行。似乎 Kivy UI 显示空白屏幕并且似乎没有响应。早些时候,Kivy 正在与 Trio 合作,在添加 socket.io 后,它变得没有响应。提供了相同的示例代码。

async with trio.open_nursery() as nursery:
     nursery.start_soon(kivy_sample_app)
     nursery.start_soon(websocket_client.connect)
     nursery.start_soon(command_line.run)
4

1 回答 1

1

乍一看,python-socketio是一个 asyncio 库。它是不trio兼容的,因为它使用asyncio函数来做这些事情。

不幸的是,您不能只asynciotrio. 两者都是asyncpython 库,但它们使用不同的不兼容事件循环。

您的选择是:

  1. 使用trio基于 socketio 的实现:
    • 找到一个trio基于 socketio 的库——我不知道有任何实现。
    • 移植python-socketiotrio或从头开始编写一个新的实现——你可以在这里使用来创建一个同时anyio兼容两者的trioasyncio
  2. 使用兼容层:
    • 在( )asyncio之上运行triotrio-asyncio
    • 在( )trio之上运行asynciotrio.lowlevel.start_guest_run
于 2020-07-06T10:18:25.647 回答