> Does it yield to the event loop while reading data
It absolutely should be and if it's not, then we would consider it a bug. I will note that
deserializing the protobuf is a blocking operation, so a very complex proto (or simply a very big one, where a copy takes a long time) could explain the issue you're seeing.
> Do we have to use grpc.aio.UnaryStreamCall to read() and yield periodically?
If the issue is the deserialization time, then I would expect this to help.
Any chance you can do a little ad-hoc measurement to determine what the source of the blocking is? If this is a common problem, I suppose we could do a native thread offload for protobuf serialization where we release the GIL, do the deserialization in native code, and provide an async def deserialization method.