Hi, 

Trying to understand the ability for gRPC to use async/await available in 
python 3.6. Right now I'm modifying the grpc tutorial code to try to 
understand how async will work. 

I'm using the route_guide examples and have modified the code slightly. 

Is there a gRPC equivalent for async for ? Right now, this returns the 
error: "TypeError: 'async for' requires an object with __aiter__ method, 
got _Rendezvous" , which makes sense. But is there a way around this so 
that I don't need to block while waiting for responses? 

Looked through the github issues, and it seems 
https://github.com/grpc/grpc/issues/6046 
talks about solutions to this, but the solution is to spawn another thread? 
Can async not be used with gRPC without needing threads? 

async def guide_route_chat(stub):
  responses = stub.RouteChat(generate_messages())
  await asyncio.sleep(1)
  async for response in responses:
    print("Received message %s at %s" % (response.message, response.location
))


async def tasks(num_tasks): 
  for elem in range(num_tasks): 
    print ("task %d" %(elem))
    await asyncio.sleep(1.0)

def run():
  channel = grpc.insecure_channel('localhost:50051')
  stub = route_guide_pb2_grpc.RouteGuideStub(channel)
  asyncio.ensure_future(guide_route_chat(stub))
  loop = asyncio.get_event_loop()
  loop.run_until_complete(tasks(10))

-- 
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/f4005eb4-2641-418d-9aee-8526b208bde0%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to