def send_to_peer(data, peer=None):
"""Send a message to a (by default) random peer."""
global peer_hostnames
peer = peer or random.choice(list(peer_hostnames))
tries_left = 3
while tries_left > 0:
try:
with socket.create_connection((peer, PORT), timeout=1) as s:
s.sendall(encode_socket_data(data))
except Exception:
logger.exception(f'failed to send to peer {peer}')
tries_left -= 1
time.sleep(2)
else:
return
logger.info(f"[p2p] removing dead peer {peer}")
peer_hostnames = {x for x in peer_hostnames if x != peer}
评论列表
文章目录