美文网首页
python使用thrift简单方法

python使用thrift简单方法

作者: 颩侢起塒 | 来源:发表于2018-12-11 16:53 被阅读0次

第一步

在有docker的服务器操作,如果没有 可以找一台闲置的机器安装docker

yum install docker -y

然后启动docker

systemctl start docker

第二步 下载thrift镜像

docker pull thrift

第三步

准备thrift文件

cat WebMonitor.thrift  定义了一个类的名字,以及定义了一个方法输出的值是string,

输入的值1号位置是accesstime的string,2号位置是url的string

service WebMonitorService {

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

}

在thrift文件所在位置运行docker

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

运行后在当前目录生成一个文件夹,叫gen-py,里面有个文件夹叫WebMonitor对应的是thrift文件的名字

在WebMonitor文件夹里有个py文件叫WebMonitorService.py的文件

在之后编写的server.py以及client.py需要修改相应的配置

在gen-py中编写server.py,其中的WebMonitorService以及webAccess以及webAccess方法里的参数需要跟thrift文件中定义的一一对应

# -*- 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是中定义的方法用于实现在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)

# 实例化Handler

handler = WebMonitorServiceHandler()

# 根据handler创建一个processor

processor = WebMonitorService.Processor(handler)

# 指定端口启动transport

transport = TSocket.TServerSocket(port=9090)

# 创建tfactory, pfactory

tfactory = TTransport.TBufferedTransportFactory() 

pfactory = TBinaryProtocol.TBinaryProtocolFactory() 

# 创建Server

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

print 'Starting the server...'

# 启动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,根据实际情况修改为server所在的地址

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

        # 获取Transport

        transport = TTransport.TBufferedTransport(transport)

        # 获取TBinaryProtocol

        protocol = TBinaryProtocol.TBinaryProtocol(transport)

        # 创建一个Client

        client = WebMonitorService.Client(protocol)

        # 连接通道transport

        transport.open()

        # 调用某个没有返回值的函数

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

        # 调用某个有返回值的函数

        # 关闭通道transport

        transport.close()

    except Thrift.TException, tx:

        print '%s' % (tx.message)

if __name__ == '__main__':

    # 创建后台执行的 schedulers

    scheduler = BackgroundScheduler() 

    # 添加调度任务

    # 调度方法为 timedTask,触发器选择 interval(间隔性),间隔时长为 2 秒

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

    # 启动调度任务

    scheduler.start()

    while True:

        print(time.time())

        time.sleep(5)

第七步

把需要gen-py拷贝到需要的服务器或者客户机上,分别安装需要的python模块,可以把gen-py改成你想要的名字

服务端运行要安装thrift木块以及requests模块

然后运行python server.py启动服务端

客户端要安装thrift以及APScheduler模块

运行python client.py启动客户端

相关文章

  • python使用thrift简单方法

    第一步 在有docker的服务器操作,如果没有 可以找一台闲置的机器安装docker yum install do...

  • python HappyBase连接hbase No proto

    python使用happybase连接hbase出错,代码如下: 因为hbase thrift服务未启动 hbas...

  • Thrift-简单使用

    简介 Apache Thrift是一个软件框架,用来进行可扩展跨语言的服务开发,结合了软件堆栈和代码生成引擎,用来...

  • python 使用 thrift 教程

    一、前言: Thrift 是一种接口描述语言和二进制通信协议。以前也没接触过,最近有个项目需要建立自动化测试,这个...

  • python 使用 thrift 教程

    一、前言: Thrift 是一种接口描述语言和二进制通信协议。以前也没接触过,最近有个项目需要建立自动化测试,这个...

  • Python 操作 HBase 常用方法总结

    一、需要的python 模块 thrifthbase-thrift 二、连接 from thrift.transp...

  • Mac下安装Thrift

    方法一: 1. 使用 brew 安装。 brew install thrift 如果没有 Homebrew,先安装...

  • Thrift 异步Service的原理

    Thrift 异步Service的原理 定义一个Thrift Service Thrift Service方法会提...

  • thrift 简介三

    thrift 使用之前我们看了一些thrift的概念,现在我们通过hello world来学习thrift的使用。...

  • TLV格式 及 VARINT数值压缩存储方法

    使用Thrift格式进行数据序列化反序列化,thrift的存储格式,主要使用thrift的TCompactProt...

网友评论

      本文标题:python使用thrift简单方法

      本文链接:https://www.haomeiwen.com/subject/hirxxqtx.html