91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python使用thrift教程的方法示例

發布時間:2020-09-09 13:06:58 來源:腳本之家 閱讀:165 作者:三只松鼠 欄目:開發技術

一、前言:  

Thrift 是一種接口描述語言和二進制通信協議。以前也沒接觸過,最近有個項目需要建立自動化測試,這個項目之間的微服務都是通過 Thrift 進行通信的,然后寫自動化腳本之前研究了一下。

需要定義一個xxx.thrift的文件, 來生成各種語言的代碼,生成之后我們的服務提供者和消費者,都需要把代碼引入,服務端把代碼實現,消費者直接使用API的存根,直接調用。

和 http 相比,同屬于應用層,走 tcp 協議。Thrift 優勢在于發送同樣的數據,request包 和 response包 要比 http 小很多,在整體性能上要優于 http 。

二、使用方法

環境準備:

從官網上下載 windows 版的 thrift.exe:http://archive.apache.org/dist/thrift/0.9.3/(我這里用的是0.9.3版本)

python版本:Python 3.7.1

pip3 install thrift

1.首先使用 thrift 之前需要定義一個 .thrift 格式的文件,比如 test.thrift

service Transmit {
string sayMsg(1:string msg);
string invoke(1:i32 cmd 2:string token 3:string data)
}

然后運行命令:thrift-0.9.3.exe -gen py test.thrift 生成 python 代碼

python使用thrift教程的方法示例

生成如下結構

python使用thrift教程的方法示例

2.然后將生成的 python 代碼 和 文件,放到新建的 python 項目中。完成后先運行服務器代碼。

服務端代碼 server.py:

import json
from test import Transmit
from test.ttypes import *
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol
from thrift.server import TServer
import socket


class TransmitHandler:
  def __init__(self):
    self.log = {}

  def sayMsg(self, msg):
    msg = json.loads(msg)
    print("sayMsg(" + msg + ")")
    return "say " + msg + " from " + socket.gethostbyname(socket.gethostname())

  def invoke(self,cmd,token,data):
    cmd = cmd
    token =token
    data = data
    if cmd ==1:
      return json.dumps({token:data})
    else:
      return 'cmd不匹配'

if __name__=="__main__":
  handler = TransmitHandler()
  processor = Transmit.Processor(handler)
  transport = TSocket.TServerSocket('127.0.0.1', 8000)
  tfactory = TTransport.TBufferedTransportFactory()
  pfactory = TBinaryProtocol.TBinaryProtocolFactory()
  server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)
  print("Starting python server...")
  server.serve()

客戶端代碼 client.py

import sys
import jsonfrom test import Transmit
from test.ttypes import *
from test.constants import *
from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TBinaryProtocol


transport = TSocket.TSocket('127.0.0.1', 8000)
transport = TTransport.TBufferedTransport(transport)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = Transmit.Client(protocol)
# Connect!
transport.open()

cmd = 2
token = '1111-2222-3333-4444'
data = json.dumps({"name":"zhoujielun"})
msg = client.invoke(cmd,token,data)
print(msg)
transport.close()

# 執行結果:cmd不匹配

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持億速云。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

中方县| 安徽省| 镇远县| 环江| 广灵县| 华亭县| 石屏县| 黄平县| 高唐县| 广河县| 响水县| 邻水| 慈溪市| 炎陵县| 白朗县| 乡宁县| 连江县| 钟山县| 韶山市| 县级市| 铜山县| 兴文县| 延安市| 拉萨市| 晋宁县| 大冶市| 广昌县| 绥滨县| 台中县| 洪雅县| 宜阳县| 旅游| 绥阳县| 开化县| 兴海县| 桐柏县| 同仁县| 长垣县| 马尔康县| 绍兴市| 云南省|