问题描述
请考虑以下协同程序:
import asyncio
from twisted.internet.defer import ensureDeferred
async def _something_that_does_io():
return b"A stream or buffer of some sort"
async def public_interface():
await asyncio.wait(_something_that_does_io)
return "Metadata and connection details"
d = ensureDeferred(public_interface())
此处的ensureDeferred
在评估函数时会导致builtins.RuntimeError: no running event loop
升高。
在我的案例中,实际应用程序试图确保延迟protocol.WebSocketCommonProtocol.recv
库中的websockets
。
web3
库使用websockets
连接到提供程序,我正在尝试建立一种简单的机制来添加和处理背压。
添加类似reactor.callInThread(asyncio_event_loop.run_forever)
之类的内容无济于事,因为它显然是特定于线程的。
这里实际上发生了什么?我怎么ensureDeferred
这样的协程?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)