Python 3和Python 2之间的通信

3
什么是Python 3.x和Python 2.x程序之间最好的通信方式?
我们正在编写一个Web应用程序,其前端服务器将主要使用Python 3(CherryPy + uWSGI),因为它是一个Unicode重型应用程序,而Python 3.x对于Unicode的支持更加干净。
但是,我们需要使用像Redis和Boto(AWS客户端)这样的系统,这些系统尚未支持Python 3。
因此,我们需要创建一个系统,以便我们可以在Python 3.x和2.x程序之间进行通信。
您认为最好的方法是什么?

不建设性?这些通常正是我们需要答案的问题。这里有一篇优秀的帖子,没有被过度监管:https://dev59.com/RqDia4cB1Zd3GeqPJct2 - Lee Melbourne
1个回答

2

最好的方法?用Python 2.x编写所有内容。这是一个简单的问题:我能在Python 2.x中做任何事情吗?是的!我能在Python 3.x中做任何事情吗?不行。那你的问题是什么呢?

但是,如果您真的非常需要使用两个不同的Python版本(为什么不考虑使用两种不同的语言?),那么您可能需要创建两个不同的服务器(同时也是客户端),它们将通过TCP/UDP或其他协议进行通信。如果您考虑将应用程序扩展到未来,这可能非常方便。尽管让我警告您:这并不容易。


是的,我正考虑这些方面。但是我应该使用什么通信介质呢?MessagePack?还是其他什么? - treecoder
为什么不容易呢?只要没有特殊要求,用XML设计一个小的RPC协议可以在不到100行代码的情况下完成... - l4mpi
@l4mpi,是的,设计可能很容易。但是有很多微妙之处,比如使其容错、排队请求/响应、缓存(如果需要)等等。我并不是说这非常困难,只是你需要意识到这些事情,并比平常更加小心。 - freakish
1
JSON和HTTP怎么样?非常易于使用的协议。 - Lennart Regebro
@LennartRegebro HTTP有一些缺点:每次需要数据时都必须重新创建请求,而打开和关闭HTTP连接会消耗资源,并且在每个请求/响应中传递一些额外的(不必要的)数据(例如头部)。因此,我认为它不适合这种类型的任务。正如我所说:我会使用带有UDP或TCP的JSON。UDP更快,但可靠性较低,因此实际上取决于OP处理的数据类型以及其重要性。 - freakish
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接