title: Python + ZMQ: Operation cannot be accomplished in current state
body: <p>I am trying to get a python program to communicate with another python program via zeromq by using the request-reply pattern. The client program should send a request to the server program which replies.</p>
  
  <p>I have two servers such that when one server fails the other takes over. Communication works perfect when the first server works, however, when the first server fails and when I make a request to the second server, I see the error:</p>
  
  <blockquote>
    <p>zmp.error.ZMQError: Operation cannot be accomplished in current state</p>
  </blockquote>
  
  <p>Code of the server 1:</p>
  
  <pre><code># Run the server
  while True:
  
      # Define the socket using the "Context"
      sock = context.socket(zmq.REP)
      sock.bind("tcp://127.0.0.1:5677")
      data = sock.recv().decode("utf-8")
      res = "Recvd"
      sock.send(res.encode('utf-8'))
  </code></pre>
  
  <p>Code of the server 2:</p>
  
  <pre><code># Run the server
  while True:
  
      # Define the socket using the "Context"
      sock = context.socket(zmq.REP)
      sock.bind("tcp://127.0.0.1:5877")
      data = sock.recv().decode("utf-8")
      res = "Recvd"
      sock.send(res.encode('utf-8'))
  </code></pre>
  
  <p>Code of client:</p>
  
  <pre><code># ZeroMQ Context For distributed Message amogst processes
  context = zmq.Context()
  sock_1 = context.socket(zmq.REQ)
  sock_2 = context.socket(zmq.REQ)
  sock_1.connect("tcp://127.0.0.1:5677")
  sock_2.connect("tcp://127.0.0.1:5877")
  
  try:
      sock_1.send(data.encode('utf-8'), zmq.NOBLOCK)
      socks_1.setsockopt(zmq.RCVTIMEO, 1000)
      socks_1.setsockopt(zmq.LINGER, 0)
      data = socks_1.recv().decode('utf-8') #receive data from the main node  
  
  except:
      try:
          #when server one fails
          sock_2.send(data.encode('utf-8'), zmq.NOBLOCK)
          socks_2.setsockopt(zmq.RCVTIMEO, 1000)
          socks_2.setsockopt(zmq.LINGER, 0)
          data = socks_2.recv().decode('utf-8')
      except Exception as e:
           print(str(e))
  </code></pre>
  
  <p>What is the problem with this approach?
  How can I resolve this?</p>