0

考虑以下一对协程:

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

web3websockets用于连接到提供程序,我正在尝试创建一个简单的机制来添加和处理背压。

添加类似的东西reactor.callInThread(asyncio_event_loop.run_forever)没有帮助,因为显然它是特定于线程的东西。

这里到底发生了什么?我怎么ensureDeferred会有这样的协程?

4

0 回答 0