Guest User

Untitled

a guest
Jul 16th, 2018
72
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. class XREQConnect(object):
  2.  
  3. def __init__(self, server_list):
  4.  
  5. context = zmq.Context()
  6. self.socket = context.socket(zmq.XREQ)
  7.  
  8. for addr in server_list:
  9. self.socket.connect(addr)
  10.  
  11.  
  12.  
  13. def send(self, msg, depth=0, max_depth=4):
  14.  
  15. self.socket.send(msg)
  16.  
  17. t = time.time()
  18. while True:
  19. try:
  20. reply = self.socket.recv(zmq.NOBLOCK)
  21. except zmq.ZMQError, e:
  22. if e.errno == zmq.EAGAIN:
  23. # no message was ready
  24. if depth == max_depth:
  25. raise Exception("max depth reached")
  26. if time.time() >= t + 2:
  27. return self.send(msg, depth + 1)
  28. break
  29. else:
  30. raise # real error
  31. else:
  32. # process message
  33. return reply
  34.  
  35.  
  36. def disconnect(self):
  37. self.socket.close()
Add Comment
Please, Sign In to add comment