我试图用Python包围异步代码。我一直在阅读关于协同程序和异步/等待声明,但在一天结束时,我仍然有点迷失。我以为我会通过一个例子来做到这一点:
我有不同的服务器在不同目的地的不同端口上侦听。我想异步执行以下函数(因为它们同时向所有数据发送数据,因为它们将受I / O限制)。
def send_current_elements(current_list):
for msg in current_list:
data, destination = msg
ip, port = (destination['ip'], destination['port'])
socket = PIRSocket()
socket.connect((ip,port))
if type(data).__name__ == 'str':
data = data.encode()
s.sendall(data)
s.close()
添加异步似乎不起作用:
async def send_current_elements(current_list):
for msg in current_list:
data, destination = msg
ip, port = (destination['ip'], destination['port'])
socket = PIRSocket()
socket.connect((ip,port))
if type(data).__name__ == 'str':
data = data.encode()
socket.sendall(data)
socket.close()
非常感谢帮助我理解这一点。
此外,PIRSocket只是一个普通套接字的包装器,它在发送之前将消息的长度加上前缀。