You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

23 lines
794 B

  1. from xmlrpc.client import ServerProxy
  2. import socket
  3. import time
  4. PORT = 1234
  5. CLUSTER = [1, 2, 3]
  6. LOGS = ['SET 5', 'ADD 1']
  7. if __name__ == '__main__':
  8. time.sleep(10) # Wait for leader election processs
  9. print('Client started')
  10. for node_id in CLUSTER:
  11. try:
  12. with ServerProxy(f'http://node_{node_id}:{PORT}') as node:
  13. if node.is_leader():
  14. print(f"Node {node_id} is the cluster leader. Sending logs")
  15. for log in LOGS:
  16. if node.leader_receive_log(log):
  17. print(f"Leader committed '{log}'")
  18. time.sleep(5) # Wait for entries to propagate
  19. except socket.error as e:
  20. print(f"Failed to connect to node_{node_id}: {e}")