微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何确保延迟等待asyncio.wait...的协程?

如何解决如何确保延迟等待asyncio.wait...的协程?

请考虑以下协同程序:

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 举报,一经查实,本站将立刻删除。