gpt4 book ai didi

python - 在 python 中使用 asyncio 运行多个套接字

转载 作者:行者123 更新时间:2023-12-03 11:59:05 27 4
gpt4 key购买 nike

设置:Python 3.7.4
我正在尝试使用异步监听不同端口来创建 6 个套接字。我试图像这样实现它。
代码:

import asyncio

async def client_thread(reader, writer):
while True:
package_type = await reader.read(100)
if not package_type:
break
if(package_type[0] == 1) :
nn_output = get_some_bytes1
elif (package_type[0] == 2) :
nn_output = get_some_bytes2
elif (package_type[0] == 3) :
nn_output = get_some_bytes3
elif (package_type[0] == 4) :
nn_output = get_some_bytes4
elif (package_type[0] == 5) :
nn_output = get_some_bytes5
else:
nn_output = get_bytes
writer.write(nn_output)
await writer.drain()

async def start_servers(host, port):
server = await asyncio.start_server(client_thread, host, port)
await server.serve_forever()

def enable_sockets():
try:
host = '127.0.0.1'
port = 60000
sockets_number = 6
for i in range(sockets_number):
asyncio.run(start_servers(host,port+i))
except:
print("Exception")

enable_sockets()
因此,当我在端口 60000 上收到来自客户端的调用时,取决于能够为客户端提供服务的请求类型,而我在端口 60001 上为另一个客户端提供服务。
每个客户端将发送从 1 到 5 的值。 Client 1 -> 1 Client 2 -> 2 等等。
此时代码在 处失败package_type = await reader.read(100) 当我尝试启动服务器时

最佳答案

重写您的 enable_sockets像这样的功能:

def enable_sockets():
try:
host = '127.0.0.1'
port = 60000
sockets_number = 6
loop = asyncio.get_event_loop()
for i in range(sockets_number):
loop.create_task(start_servers(host,port+i))
loop.run_forever()
except Exception as exc:
print(exc)

关于python - 在 python 中使用 asyncio 运行多个套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62571622/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com