2012-09-26 112 views
3

在Python 3.x和Python 2.x程序之間進行通信的最佳方式是什麼?Python 3和Python 2之間的通信

我們正在編寫一個Web應用程序,其前端服務器將用Python 3編寫(CherryPy + uWSGI),主要是因爲它是unicode沉重的應用程序,而Python 3.x對unicode有更清晰的支持。

但是我們需要使用像Redis和Boto(AWS客戶端)這樣還沒有Python 3支持的系統。

因此,我們需要創建一個系統,我們可以在Python 3.x和2.x程序之間進行通信。

您認爲最好的方法是做什麼?

回答

2

最好的方法是什麼?用Python 2.x編寫所有內容。這是一個簡單的問題:我可以在Python 2.x中完成所有任務嗎?是!我可以在Python 3.x中做所有事情嗎?不,那你的問題是什麼?

但是,如果您確實需要使用兩種不同的Python版本(爲什麼不使用兩種不同的語言?),那麼您可能必須創建兩個不同的服務器(它們將同時是客戶端)通過TCP/UDP或任何你想要的協議。如果您考慮將來擴展應用程序,這可能會非常方便。雖然讓我警告你:它一點都不容易。

+0

是的,我正在思考這些問題。但是,我應該使用什麼傳播媒介? MessagePack?或者是其他東西? – treecoder

+0

爲什麼不容易?在xml中設計一個小型的rpc協議,只要你沒有特殊要求,就可以在100個loc之內完成...... – l4mpi

+0

@ l4mpi是的,設計可能很簡單。然而,有很多細微之處,如容錯,請求/響應排隊,緩存(如果需要)等等。我並不是說這是非常困難的,只是你需要知道這樣的事情並比平時更小心。 – freakish