我如何指定服务器选项?

问题描述 投票:6回答:3

我正在尝试在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_lengthmax_receive_message_length等。options中有一个grpc.server(...)参数,但我不知道如何使用它。

server = grpc.server(futures.ThreadPoolExecutor(max_workers=100), options=[???])

来自gRPC documentation

options –键值对的可选列表(gRPC运行时中的通道args),用于配置通道。

如何创建这些选项?它们是字符串对吗?

不过我是Python和gRPC的新手。

python grpc
3个回答
5
投票

您可以在此github问题中找到一个示例:https://github.com/grpc/grpc/issues/11299

对于最大消息长度为30mb,请使用:

options = [('grpc.max_message_length', 30 * 1024 * 1024)]


1
投票

如果要将邮件大小从默认的4MB扩大到30MB。请参考此How to increase message size in grpc using python

options = [('grpc. max_receive_message_length', 30 * 1024 * 1024)]


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_channelgrpc.secure_channel)时设置选项。

服务器端在创建服务器(grpc.server)时设置选项。

© www.soinside.com 2019 - 2024. All rights reserved.