You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django gRPC Framework List接口返回非stream repeated消息序列化失败问题

问题原因

你遇到的序列化报错不是gRPC本身不支持一次性返回数组,而是Django gRPC framework的ModelService默认的List逻辑和你定义的返回消息结构不匹配:
ModelService处理非流式List请求时,需要明确知道序列化后的组织列表要放到你自定义的Organizations消息的哪个字段里,你没有配置对应参数,框架无法正确组装返回消息,就会触发序列化失败错误。
而流式返回时框架不需要封装外层的Organizations消息,直接逐行返回单个Organization对象,所以不会出现匹配问题。

解决方案

直接修改你的services.py,新增两个配置项即可,不需要改动现有proto定义:

import org_pb2 # 确保你已经导入了生成的proto类

class OrganizationService(generics.ModelService):
    queryset = Organization.objects.all()
    serializer_class = OrganizationSerializerProto
    # 新增以下两行配置
    list_response_proto_class = org_pb2.Organizations
    list_response_field_name = "organization"

参数说明:

  • list_response_proto_class:指定List接口返回的外层消息类,也就是你自己定义的Organizations对应的proto类
  • list_response_field_name:指定序列化后的列表数据要放到外层消息的哪个字段下,这里对应你Organizations里定义的organization字段

修改完成后重启服务,再调用非流式的List接口即可正常一次性返回所有组织列表。

内容的提问来源于stack exchange,提问作者Hasan Gilani

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:27:03