1. 程式人生 > >使用Thrift讓Python為Java提供服務

使用Thrift讓Python為Java提供服務

Thrift是基於TCP的,谷歌的GRPC是基於HTTP的。Thrift和GRPC都是比直接寫個web介面進行呼叫更完美的方式,最明顯的一點就是:我們可以定義結構體,避免了手動解析的過程。

但是,在將Python作為Thrift服務端,Java作為客戶端時,有一個天坑:始終都是connection refused。

windows下檢視端口占用:netstat -aon|findstr "8091"。會發現服務正常啟動了。
然而多次執行python服務端,竟然不報“埠已佔用”的錯誤。

錯誤原因是:Python使用了TCPV6,Java使用的是TCP。
改成127.0.0.1解決問題,看來以後再也不要用localhost了,一律使用127.0.0.1

Python:  transport = TSocket.TServerSocket(host="127.0.0.1", port = 9091)
Java:  transport = new TSocket("127.0.0.1", 9091);

參考資料
https://stackoverflow.com/questions/16760741/apache-thrift-python-java-connection-refused