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
