如何在 nameko rpc 中传递二进制数据?

How to communicate binary data in nameko rpc?

似乎 json 是 nameko rpc 中序列化数据的默认方式。如果我调用 rpc.my_service.send(b'\x01\'),它会引发异常 kombu.exceptions.EncodeError: Object of type 'bytes' is not JSON serializable

有没有办法在nameko rpc中发送二进制数据?例如,pickle。请给我一个简短的例子好吗?提前谢谢你。

您可以通过在配置文件中指定 pickle 进行序列化。只需:

# config.yaml
serializer: pickle

nameko run my_service --config config.yaml

如果您需要更高级的东西,您可以构建自己的序列化程序并再次配置该服务以将其与您的配置文件一起使用:

# config.yaml
serializer: my_serializer
SERIALIZERS:
    my_serializer:
        encoder: 'path.to.encode.function'
        decoder: 'path.to.decode.function'
        content_type: 'application/x-my-serializer'

编码和解码函数只接受一个值和 return 转换后的版本。