我如何在没有TimeOuterror的情况下维护两个主动的Asyncio流



我正在尝试使用asyncio在P2P网络应用程序中管理连接。我正在尝试使用Asyncio流保持大量(〜300(连接。

我正在使用python3.6,它每次都在asyncio.open_connection(...(上悬挂。

async def example():
    reader, writer = await asyncio.open_connection(ip, port) 
    writer.write(handshake)
    await writer.drain()
    response = await reader.read(RESP_SIZE)
    errcode, results = await worker(reader, writer, workerdata)
    # This is the line it hangs and times out on
    reader2, writer2 = await asyncio.open_connection(ip2, port2)
    # Second, identical handshake sequence here
    writer2.write(handshake)
    await writer2.drain()
    response = await reader2.read(RESP_SIZE)
    errcode, results = await worker(reader2, writer2, workerdata2)

def main():
    loop = asyncio.get_event_loop()
    loop.run_until_complete(example())
    loop.close()

一个微不足道的示例适用于单个连接,但是一旦我尝试执行握手/打开第二个连接,我就会收到

TimeoutError: [Errno 110] Connect call failed

是否可以使用asyncio流同时与不同的客户端IP/端口对有多个连接?是否有不同的异步库?

它挂起,因为工人的僵局在等待一些外国消息。建议,始终使用超时。

最新更新