在Python中通过多个套接字异步发送数据

时间:2017-04-20 10:41:21

标签: python sockets asynchronous

我试图用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只是一个普通套接字的包装器,它在发送之前将消息的长度加上前缀。

0 个答案:

没有答案