In python gRPC, I tried grpc aio streaming. If there is just one client, the speed is acceptable. But when the number of clients increases, data transfer speed is slower and slower. I tried multi processing with sync gRPC, but sometimes it still route the request to a busy one, then the result is slow than expected. I tried multiprocessing with aio gRPC as well, by each process serves an aio gRPC server. It seems no big difference with multiprocessing with sync gRPC.
In addition, during the testing, it seems that the server is waiting till the client gets the message, then the server send the next one. The server may be affected by some very slow client.
Overall, my question is: If python is the only option, what is the best practice of creating a Data transfer service using python gRPC?