接下來,自己寫個簡單的thrift協議,儲存為hello.thrift檔案如下
/*
thrift介面定義檔案
say介面接收乙個引數msg,返回數值型別
body介面接收3個引數,返回字串型別
*/service helloservice
然後使用thrift分別生成python**:在cmd輸入如下命令
thrift-0.12.0.exe --gen py hello.thrift
則會生成如下資料夾gen-py:
進入gen-py目錄:
新建服務端python**, service.py:
# coding: utf-8
from hello import helloservice
from hello.ttypes import *
from thrift.transport import tsocket
from thrift.transport import ttransport
from thrift.protocol import tbinaryprotocol
from thrift.server import tserver
class helloservicehandler:
def say(self, msg):
ret = "服務端接收到的資訊為:" + msg
print (ret)
return len(msg) # 返回int,與thrift檔案中定義的返回i32資料型別一致
def body(self, id, name, age):
return f'id是, 姓名是, 年齡是' # 返回string,與thrift檔案中一致
handler = helloservicehandler()
processor = helloservice.processor(handler) # 定義乙個tprocess處理類,建立tprocess物件
transport = tsocket.tserversocket("localhost", 9090) # 設定網路讀寫
tfactory = ttransport.tbufferedtransportfactory()
pfactory = tbinaryprotocol.tbinaryprotocolfactory()
server = tserver.t******server(processor, transport, tfactory, pfactory)
print("啟動服務")
server.serve()
編寫客戶端python**,client.py:
# coding: utf-8
from hello import helloservice
from thrift import thrift
from thrift.transport import tsocket
from thrift.transport import ttransport
from thrift.protocol import tbinaryprotocol
while true:
try:
transport = tsocket.tsocket('localhost', 9090) # 建立乙個傳輸層物件(ttransport),設定呼叫的服務位址為本地,埠為 9090,tsocket傳輸方式
transport = ttransport.tbufferedtransport(transport)
protocol = tbinaryprotocol.tbinaryprotocol(transport) # 建立通訊協議物件(tprotocol),設定傳輸協議為 tbinaryprotocol
client = helloservice.client(protocol) # 建立乙個thrift客戶端物件
transport.open()
send_msg = input("客戶端傳送資訊:")
rec_msg = client.say(send_msg)
print("say方法返回的資訊為:" , rec_msg)
rec_msg = client.body(2, send_msg, 28)
print('body方法返回的資訊為:', rec_msg)
except thrift.texception as ex:
print(ex.message)
finally:
transport.close()
然後分別用2個cmd視窗,先執行服務端**,再執行客戶端**,效果如下:
python3爬蟲實踐(二) 爬蟲前奏
1.1 什麼是網路爬蟲 1.2 通用爬蟲和聚焦爬蟲 2.1 什麼是 http 和 https 協議 2.2 在瀏覽器中傳送乙個 http 請求的過程 2.3 url 詳解 scheme host port path query string anchor2.4 常用請求方法 get 請求 一般情況下...
python3爬蟲實踐(七) xpath介紹
1 什麼是 xpath 2 xpath 開發工具 3 xpath 語法 表示式描述 示例結果 nodename 選取此節點的所有節點 bookstore 選取 bookstore 下所有的子節點 如果是在最前面,代表從根節點擊取。否則選擇某節點下的某個節點 bookstore 選取根元素下所有的 b...
python3爬蟲實踐(八) lxml 庫
1 基本使用 from lxml import etree text 標題的效果 四級標題的效果 利用 etree.html 將字串解析為 html 檔案 html etree.html text 將字串序列化為 html 文件 2 從檔案中讀取 html from lxml import etre...