
1 xowenx Aug 6, 2012 protobuffer,thrift 推荐更轻量的protobuffer |
2 keakon Aug 6, 2012 不管你是什么协议,发送的都是字符串,区别是文本或二进制… 如果双方都用Python,可以用pickle;否则可以用struct,自己做解析;和Javascript打交道的话可以用JSON。 |
3 Livid MOD PRO import marshal help(marshal) marshal.loads() marshal.dumps() |
4 freefcw Aug 6, 2012 如果想发送二进制的数据的话,可以使用bytearray,不过编码和解码算法需要自己定义,好处是通用性比较好,各种语言通用 from ctypes import bytearray ACK = bytearray(3) ACK[0]=0x80; ACK[1]=0x02; ACK[2]=0xfe; |
5 zxp Aug 6, 2012 还有phprpc可以用 |
6 richardma Aug 6, 2012 感觉就是序列化,然后在eval的过程,说到底就是这个意思,实现上应该有很多库吧。 |
7 kavinyao Aug 6, 2012 @Livid 一直想请教这个问题:官方文档中说marshal是内部模块,并且不推荐作序列化使用。但是之前看一些slides,感觉很多人都marshal来序列化。 请问这是通用做法吗?相对于pickle和shelve有何好处? |
10 notedit Aug 6, 2012 @kavinyao pickle 本身是一门语言,在解码的时候可以构造一些代码让其执行,不安全。marshal 是python 专有的,其他的语言没法解析,如果你只在python服务之间传递的话,可以使用。 我自己使用比较多的是bson和msgpack,推荐msgpack,打包的数据更小,多语言支持。 |
12 leafduo Aug 7, 2012 JSON 呗,流量敏感的话就 protobuf |
13 Livid MOD PRO |
14 dreampuf Aug 8, 2012 |