python使用thrift簡(jiǎn)單方法

第一步

在有docker的服務(wù)器操作,如果沒(méi)有 可以找一臺(tái)閑置的機(jī)器安裝docker

yum install docker -y

然后啟動(dòng)docker

systemctl start docker


第二步 下載thrift鏡像

docker pull thrift


第三步

準(zhǔn)備thrift文件

cat WebMonitor.thrift? 定義了一個(gè)類的名字品嚣,以及定義了一個(gè)方法輸出的值是string,

輸入的值1號(hào)位置是accesstime的string,2號(hào)位置是url的string

service WebMonitorService {

? ? string? webAccess(1:string accesstime,2:string url)

}

在thrift文件所在位置運(yùn)行docker

docker run -v "$PWD:/data" thrift thrift -o /data? --gen py /data/WebMonitor.thrift

運(yùn)行后在當(dāng)前目錄生成一個(gè)文件夾,叫g(shù)en-py疤估,里面有個(gè)文件夾叫WebMonitor對(duì)應(yīng)的是thrift文件的名字

在WebMonitor文件夾里有個(gè)py文件叫WebMonitorService.py的文件

在之后編寫的server.py以及client.py需要修改相應(yīng)的配置

在gen-py中編寫server.py,其中的WebMonitorService以及webAccess以及webAccess方法里的參數(shù)需要跟thrift文件中定義的一一對(duì)應(yīng)

# -*- coding: UTF-8 -*-

"""

# furyamber

"""

from WebMonitor import WebMonitorService

from thrift.transport import TSocket

from thrift.transport import TTransport

from thrift.protocol import TBinaryProtocol

from thrift.server import TServer

import datetime

import sys

reload(sys)

import requests

import subprocess

sys.setdefaultencoding('utf-8')

class WebMonitorServiceHandler:

? ? """

? ? # WebMonitorServiceHandler是中定義的方法用于實(shí)現(xiàn)在thrift文件中定義的接口

? ? """

? ? def __init__(self):

? ? ? ? self.log = {}

? ? def webAccess(self,accesstime,url):

? ? ? ? try:

? ? ? ? ? ? r = requests.get(url,timeout=1)

? ? ? ? except Exception,e:

? ? ? ? ? ? response_time=0

? ? ? ? else:

? ? ? ? ? ? response_time=int(r.elapsed.microseconds)

? ? ? ? print response_time

? ? ? ? return str(response_time)

# 實(shí)例化Handler

handler = WebMonitorServiceHandler()

# 根據(jù)handler創(chuàng)建一個(gè)processor

processor = WebMonitorService.Processor(handler)

# 指定端口啟動(dòng)transport

transport = TSocket.TServerSocket(port=9090)

# 創(chuàng)建tfactory, pfactory

tfactory = TTransport.TBufferedTransportFactory()?

pfactory = TBinaryProtocol.TBinaryProtocolFactory()?

# 創(chuàng)建Server

server = TServer.TSimpleServer(processor, transport, tfactory, pfactory)?

print 'Starting the server...'

# 啟動(dòng)server

server.serve()?

print 'done.'

⑥編寫client.py文件

#!/usr/bin/env python

#-*- coding:utf-8 -*-

__author__ = "furyamber@qq.com"

__created__ = "2018-12-05 14:14:37"

from WebMonitor import WebMonitorService

from thrift import Thrift

from thrift.transport import TSocket

from thrift.transport import TTransport

from thrift.protocol import TBinaryProtocol

import datetime

import time

from apscheduler.schedulers.background import BackgroundScheduler

def timedTask():

? ? now = int(time.time())

? ? now = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())

? ? try:

? ? ? ? # 連接Socket侦厚,根據(jù)實(shí)際情況修改為server所在的地址

? ? ? ? transport = TSocket.TSocket('192.168.1.30', 9090)

? ? ? ? # 獲取Transport

? ? ? ? transport = TTransport.TBufferedTransport(transport)

? ? ? ? # 獲取TBinaryProtocol

? ? ? ? protocol = TBinaryProtocol.TBinaryProtocol(transport)

? ? ? ? # 創(chuàng)建一個(gè)Client

? ? ? ? client = WebMonitorService.Client(protocol)

? ? ? ? # 連接通道transport

? ? ? ? transport.open()

? ? ? ? # 調(diào)用某個(gè)沒(méi)有返回值的函數(shù)

? ? ? ? print client.webAccess(now,"http://www.baidu.com")

? ? ? ? # 調(diào)用某個(gè)有返回值的函數(shù)

? ? ? ? # 關(guān)閉通道transport

? ? ? ? transport.close()

? ? except Thrift.TException, tx:

? ? ? ? print '%s' % (tx.message)

if __name__ == '__main__':

? ? # 創(chuàng)建后臺(tái)執(zhí)行的 schedulers

? ? scheduler = BackgroundScheduler()?

? ? # 添加調(diào)度任務(wù)

? ? # 調(diào)度方法為 timedTask红氯,觸發(fā)器選擇 interval(間隔性)尚洽,間隔時(shí)長(zhǎng)為 2 秒

? ? scheduler.add_job(timedTask, 'interval', seconds=1)

? ? # 啟動(dòng)調(diào)度任務(wù)

? ? scheduler.start()

? ? while True:

? ? ? ? print(time.time())

? ? ? ? time.sleep(5)

第七步

把需要gen-py拷貝到需要的服務(wù)器或者客戶機(jī)上夷家,分別安裝需要的python模塊,可以把gen-py改成你想要的名字

服務(wù)端運(yùn)行要安裝thrift木塊以及requests模塊

然后運(yùn)行python server.py啟動(dòng)服務(wù)端

客戶端要安裝thrift以及APScheduler模塊

運(yùn)行python client.py啟動(dòng)客戶端

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末帝美,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子晤硕,更是在濱河造成了極大的恐慌悼潭,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件舞箍,死亡現(xiàn)場(chǎng)離奇詭異舰褪,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)疏橄,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,569評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門占拍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人捎迫,你說(shuō)我怎么就攤上這事晃酒。” “怎么了窄绒?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,130評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵贝次,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我彰导,道長(zhǎng)蛔翅,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,648評(píng)論 1 297
  • 正文 為了忘掉前任位谋,我火速辦了婚禮山析,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘掏父。我一直安慰自己凉倚,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,655評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布咧最。 她就那樣靜靜地躺著慈鸠,像睡著了一般。 火紅的嫁衣襯著肌膚如雪膏燃。 梳的紋絲不亂的頭發(fā)上茂卦,一...
    開(kāi)封第一講書(shū)人閱讀 52,268評(píng)論 1 309
  • 那天,我揣著相機(jī)與錄音组哩,去河邊找鬼等龙。 笑死处渣,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的蛛砰。 我是一名探鬼主播罐栈,決...
    沈念sama閱讀 40,835評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼泥畅!你這毒婦竟也來(lái)了荠诬?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,740評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤位仁,失蹤者是張志新(化名)和其女友劉穎柑贞,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體聂抢,經(jīng)...
    沈念sama閱讀 46,286評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡钧嘶,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,375評(píng)論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了琳疏。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片有决。...
    茶點(diǎn)故事閱讀 40,505評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖空盼,靈堂內(nèi)的尸體忽然破棺而出书幕,到底是詐尸還是另有隱情,我是刑警寧澤揽趾,帶...
    沈念sama閱讀 36,185評(píng)論 5 350
  • 正文 年R本政府宣布按咒,位于F島的核電站,受9級(jí)特大地震影響但骨,放射性物質(zhì)發(fā)生泄漏励七。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,873評(píng)論 3 333
  • 文/蒙蒙 一奔缠、第九天 我趴在偏房一處隱蔽的房頂上張望掠抬。 院中可真熱鬧,春花似錦校哎、人聲如沸两波。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,357評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)腰奋。三九已至,卻和暖如春抱怔,著一層夾襖步出監(jiān)牢的瞬間劣坊,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,466評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工屈留, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留局冰,地道東北人测蘑。 一個(gè)月前我還...
    沈念sama閱讀 48,921評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像康二,于是被迫代替她去往敵國(guó)和親碳胳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,515評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容