我正在尝试在python中运行gRPC服务器。我找到了这样做的方法:
import grpc
from concurrent import futures
server = grpc.server(futures.ThreadPoolExecutor(max_workers=100))
... # add my grpc servicer to server
server.add_insecure_port('[::]:50051')
server.start()
我需要向服务器添加一些选项,例如max send message size
,max receive message size
等。options
中有一个grpc.server(...)
参数,但我无法弄清楚如何使用它。
server = grpc.server(futures.ThreadPoolExecutor(max_workers=100), options=[???])
options - 键值对的可选列表(gRPC中的通道参数) 运行时)
如何创建选项?它们是字符串对吗?
我是python和grpc的新手。
答案 0 :(得分:4)
您可以在此github问题中找到一个示例:https://github.com/grpc/grpc/issues/11299
对于30mb最大消息长度使用:
options = [('grpc.max_message_length', 30 * 1024 * 1024)]
答案 1 :(得分:1)
如果要将邮件大小从默认的4MB扩大到30MB。 请参阅此How to increase message size in grpc using python
options = [('grpc. max_receive_message_length', 30 * 1024 * 1024)]
答案 2 :(得分:0)
选项应为Tuple[str, Any]
的列表。
下面,我添加一些更完整的服务器示例。尽管问题主要是关于要传递的gRPC选项的结构(之前已经回答过),但答案却链接到客户端实现的示例(因此通道调用可能会有些混乱)。
import grpc
from concurrent import futures
...
MAX_MESSAGE_LENGTH = 1024 * 1024 * 32
...
_server = grpc.server(
futures.ThreadPoolExecutor(max_workers=4),
options=[("grpc.max_receive_message_length", MAX_MESSAGE_LENGTH)],
)
... # add services to server
_server.add_insecure_port("[::]:50051")
_server.start()
客户端在创建频道(grpc.insecure_channel
,grpc.secure_channel
)时设置选项。
服务器端在创建服务器(grpc.server
)时设置选项。