I'm trying to set up a python gRPC simple client and server, where the 
client uses round robin load balancing against a single DNS record, where I 
have multiple servers (instances) in the DNS record.

In the beginning, I'm able to connect and issue queries fine, but when I 
try a re-deploy of my servers, I get some weird behavior that I was hoping 
would be resolved automatically by the client library. In my re-deploy, I 
first bring up new servers, set the DNS record to the IPs of the new 
servers, and then destroy the old servers. Everything seems to work until I 
destroy the old servers, at which point I get a couple of 
UNAVAILABLE_ERRORs followed by DEADLINE_EXCEEDED until I kill the client. 
>From what I understand, when the sub-channels go down (i.e. the server 
instances are killed), the channel should re-resolve the DNS record and 
attempt to re-connect to the new instances. Am I interpreting this 
incorrectly? Is there some channel and/or server option I need to set in 
order for this to work?

Sample client below:

  channel = grpc.insecure_channel("localhost:10000", 
options=(("grpc.lb_policy_name", "round_robin"),))
  fut = grpc.channel_ready_future(channel)
  fut.result()
  print("done waiting")
  stub = test_pb2_grpc.TestStub(channel)
  while True:
    try:
      print(stub.Test(request, timeout=5))
    except grpc.RpcError as e:
      print("{} {}".format(time.time(), e))
    time.sleep(0.5)

-- 
You received this message because you are subscribed to the Google Groups 
"grpc.io" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/grpc-io.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/grpc-io/c44e86b1-c6ba-4b13-9ada-6a881a9b720b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to