C++ C+中Python gRPC服务器最大工作线程和最大并发RPC的等价选项+;同步服务器

C++ C+中Python gRPC服务器最大工作线程和最大并发RPC的等价选项+;同步服务器,c++,grpc,grpc-python,C++,Grpc,Grpc Python,这是python中的gRPC服务器: server = grpc.server( thread_pool=futures.ThreadPoolExecutor(max_workers=32), maximum_concurrent_rpcs=100, ) 在Python中,如果服务器正在处理最大并发rpcs请求,则下一个请求将立即被拒绝 如果max_-workers小于max_-concurrent_-rpc,则有max_-workers处理请求的线程数,如果没有空闲线程,则下

这是python中的gRPC服务器:

server = grpc.server(
    thread_pool=futures.ThreadPoolExecutor(max_workers=32),
    maximum_concurrent_rpcs=100,
)
在Python中,如果服务器正在处理最大并发rpcs请求,则下一个请求将立即被拒绝

如果max_-workers小于max_-concurrent_-rpc,则有max_-workers处理请求的线程数,如果没有空闲线程,则下一个请求将进入队列,直到某个线程空闲并从队列中提取请求进行处理。队列的最大大小为 最大并发RPC

<> P>强>我的问题是同步服务器C++ GRPC中的等价选项是什么?< /强>

1。如何设置线程池大小,以及如何设置队列大小以在线程池没有任何空闲线程后将额外请求放入其中?

2。如何设置排队请求的超时?

有一个SetMaxThreads选项,但它的工作方式似乎是将max_worker和max_concurrent_RPC都设置为该选项

grpc::ResourceQuota rq;
rq.SetMaxThreads(100);
builder.SetResourceQuota(rq);
我看到了下面的选项,但它们没有以我期望的方式工作

builder.SetSyncServerOption(ServerBuilder::SyncServerOption::NUM_CQS, 3);
builder.SetSyncServerOption(ServerBuilder::SyncServerOption::MIN_POLLERS, 1);
builder.SetSyncServerOption(ServerBuilder::SyncServerOption::MAX_POLLERS, 5);
builder.SetSyncServerOption(ServerBuilder::SyncServerOption::CQ_TIMEOUT_MSEC, 10000);

GRPC_ARG_MAX_CONCURRENT_STREAMS限制了将及时处理的最大请求数:“http2连接上允许的最大并发传入流数。”

如果有更多的请求,它们将被缓冲。缓冲区大小受资源配额限制(目前仅限内存配额)


缓冲请求将在达到其截止日期(由应用程序指定)时超时

GRPC_ARG_MAX_CONCURRENT_STREAMS限制将及时处理的最大请求数:“http2连接上允许的最大并发传入流数。”

如果有更多的请求,它们将被缓冲。缓冲区大小受资源配额限制(目前仅限内存配额)


缓冲请求将在达到其截止日期(由应用程序指定)时超时

如何为同步服务器设置GRPC_ARG_MAX_并发流?你能提供一个片段吗?是如何使用server builder选项配置服务器的示例。我认为它是同步服务器还是异步服务器无关紧要。如何为同步服务器设置GRPC_ARG_MAX_CONCURRENT_流?你能提供一个片段吗?是如何使用server builder选项配置服务器的示例。我认为它是同步服务器还是异步服务器并不重要。