1 回答

TA贡献1786条经验 获得超11个赞
您描述的性能问题听起来像是并发问题。gRPC Python 服务器使用 ThreadExecutor 来处理 RPC,增加 worker 的数量应该能够允许更多的并发 RPC。
grpc.server(futures.ThreadPoolExecutor(max_workers=1000))
对于问题 2,cProfile 之类的分析器,是的,perf是调试性能问题的强大工具。
对于问题 3,响应的大小并不重要(KB 级别)。
另一方面,我们正在开发 gRPC Python 的 AsyncIO 版本。它具有显着的性能提升,并解决了有限的并发 RPC 问题。它目前是实验性的,但请随时尝试。
from grpc.experimental import aio
class Servicer(...):
async def ServerStreamingMethodHandler(...):
for ...:
yield response
async def startServer():
global server
server = aio.server()
servicer_grpc.add_Servicer_to_server(Servicer(), server)
server.add_insecure_port('[::]:' + str(port))
await server.start()
添加回答
举报