Ale*_*sky 10 python networking twisted
我需要在网络周围发送对象.我将使用Twisted,我刚刚开始查看文档.
据我所知,python实现套接字的唯一方法是通过文本.那么我如何使用字符串发送对象?泡菜?还是有更好的东西?
Ale*_*lli 19
Python端点之间提供的最常见的序列化是pickle格式(在Python 2.any中,一定要使用cPickle模块和-1aka pickle.HIGHEST_PROTOCOL协议;如果你需要Python 2.any和Python之间的互操作性3.更多关心需要).对于特别简单的物体,marshal模块有时可以更快,更紧凑.对于与非Python端点的互操作,json可能是最好的(或者您可以使用它xml来定义或采用其他现有的序列化格式),但这些格式和解析可能会更笨重,速度更慢.
据我所知,python实现套接字的唯一方法是通过文本.
不,所有字符串都是受欢迎的! - )你可能会感到困惑的是,在Python 2中,"普通字符串"实际上是一个字节字符串("text"将是unicode类型); Python 3设置正确,并使用Unicode作为"普通字符串",使用特定字节字符串类型作为字节串.
根据某些协议或其他语言,字节串是任何语言执行任何形式的序列化和反序列化的一般方式 - 当然,这样的字节流或blob可以进入网络,数据库,普通文件等.
Twisted提供了自己的序列化格式,作为部分twisted.spread - 它主要用于Perspective Broker(PB),但如果你不想因某些特殊原因使用PB,你可以将它重新用于你自己的目的.在连载的文档,twisted.spread.jelly是在这里,和总结好格式的目标...:
基于S表达式的python对象持久化.
它做的非常像Pickle; 然而,泡菜的主要目标似乎是效率(空间和时间); jelly的主要目标是安全性,人类可读性以及对其他环境的可移植性.
如果您更关心安全性,可读性和便携性,而不是速度和紧凑性,那么果冻可能确实对您有用.