如何指定服务器选项



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

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

从 gRPC 文档:

选项 – 用于配置通道的键值对(gRPC 运行时中的通道参数(的可选列表。

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

不过,我是Python和gRPC的新手。

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

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

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

如果要将

邮件大小从默认的 4MB 扩大到 30MB。请参考这个 如何使用 python 在 grpc 中增加消息大小

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

选项应该是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 (。

相关内容

最新更新