上节我们介绍了基于Thrift实现java与java的RPC调用,本节我们基于Thrift实现Java与Python的RPC调用

首先,修改data.thirft文件,将命名空间由java改为py

namespace py thrift.generated

然后打开终端,输入命令 thrift --gen py src/thrift/data.thrift 生成Python代码

打开Pycharm,新建Pure Python项目,将在idea中生成的python文件拷贝至Pycharm中

编写python客户端程序py_client.py

# -*- coding:utf-8 -*-
from py.generated import PersonService, ttypes __author__ = 'kpzhang' from thrift import Thrift
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TCompactProtocol try:
tSocket = TSocket.TSocket("localhost", 8899)
tSocket.setTimeout(900) transport = TTransport.TFramedTransport(tSocket)
protocol = TCompactProtocol.TCompactProtocol(transport)
client = PersonService.Client(protocol) transport.open() person = client.getPersonByUsername("张三") print(person.username)
print(person.age)
print(person.married) print('---------------------') newPerson = ttypes.Person();
newPerson.username = "李四"
newPerson.age = 30
newPerson.married = True client.savePerson(newPerson) transport.close() except Thrift.TException as tx:
print('%s' % tx.message)

分别启动java服务端和Python客户端,查看演示效果,(java端效果和上节效果一样,这里不再截图)

本节我们介绍了基于Thrift实现Java与Python的RPC调用,下节我们结合netty4+springboot来做一个小项目

《精通并发与Netty》学习笔记(07 - 基于Thrift实现Java与Python的RPC调用)的更多相关文章

  1. 《精通并发与Netty》学习笔记(01 - netty介绍及环境搭建)

    一.Netty介绍     Netty是由JBOSS提供的一个java开源框架.Netty提供异步的.事件驱动的网络应用程序框架和工具,用以快速开发高性能.高可靠性的网络服务器和客户端程序.     ...

  2. 学习笔记 07 --- JUC集合

    学习笔记 07 --- JUC集合 在讲JUC集合之前我们先总结一下Java的集合框架,主要包含Collection集合和Map类.Collection集合又能够划分为LIst和Set. 1. Lis ...

  3. Netty学习笔记-入门版

    目录 Netty学习笔记 前言 什么是Netty IO基础 概念说明 IO简单介绍 用户空间与内核空间 进程(Process) 线程(thread) 程序和进程 进程切换 进程阻塞 文件描述符 文件句 ...

  4. Netty 学习笔记(1)通信原理

    前言 本文主要从 select 和 epoll 系统调用入手,来打开 Netty 的大门,从认识 Netty 的基础原理 —— I/O 多路复用模型开始.   Netty 的通信原理 Netty 底层 ...

  5. 精通并发与 Netty (一)如何使用

    精通并发与 Netty Netty 是一个异步的,事件驱动的网络通信框架,用于高性能的基于协议的客户端和服务端的开发. 异步指的是会立即返回,并不知道到底发送过去没有,成功没有,一般都会使用监听器来监 ...

  6. Netty学习笔记(二) 实现服务端和客户端

    在Netty学习笔记(一) 实现DISCARD服务中,我们使用Netty和Python实现了简单的丢弃DISCARD服务,这篇,我们使用Netty实现服务端和客户端交互的需求. 前置工作 开发环境 J ...

  7. 机器学习实战(Machine Learning in Action)学习笔记————07.使用Apriori算法进行关联分析

    机器学习实战(Machine Learning in Action)学习笔记————07.使用Apriori算法进行关联分析 关键字:Apriori.关联规则挖掘.频繁项集作者:米仓山下时间:2018 ...

  8. Docker学习笔记之一,搭建一个JAVA Tomcat运行环境

    Docker学习笔记之一,搭建一个JAVA Tomcat运行环境 前言 Docker旨在提供一种应用程序的自动化部署解决方案,在 Linux 系统上迅速创建一个容器(轻量级虚拟机)并部署和运行应用程序 ...

  9. RPC 框架要实现这个功能,我们可以使用泛化调用。那什么是泛化调用呢?我们带着这个问题,先学习下如何在没有接口的情况下进行 RPC 调用。

    RPC 框架要实现这个功能,我们可以使用泛化调用.那什么是泛化调用呢?我们带着这个问题,先学习下如何在没有接口的情况下进行 RPC 调用.

随机推荐

  1. Vue -- element-ui el-table 点击tr项页面跳转,返回后缓存回显点击项

    页面跳转反显(点击项,点击table滚动的位置,搜索条件,分页回显) 点击table tr项后,页面跳转到下级页面,返回回显搜索条件.当前页码.并将点击项select选中.滚动条也被记录回显跳转时滚动 ...

  2. Django的ManyToManyField(多对多)中的through的作用

    创建一个经典的多对多关系:一本书可以有多个作者,一个作者可以有多本书(如下) 运行“python manage.py makemigratons"和"python manage.p ...

  3. django加载本地html

    django加载本地html from django.shortcuts import render from django.http import HttpResponse from django. ...

  4. select([[data],fn])

    select([[data],fn]) 概述 当 textarea 或文本类型的 input 元素中的文本被选择时,会发生 select 事件.大理石平台生产厂 这个函数会调用执行绑定到select事 ...

  5. 002_Python基础学习网站

    (一)电脑端:Python 基础教程 (二)手机端:Python 基础教程

  6. webservice应用+建议不用webservice

    webservice应用 1.分布式应用的集成(应用程序之间的集成) 2.软件重用 将一个软件的功能以webservice方式暴露出来,达到软件重用.例如上边分析天气预报,将天气查询功能以webser ...

  7. Git出现 fatal: Pathspec 'xxx' is in submodule 'xxx' 异常的解决方案

    今天在使用git的时候,发现无论怎么改.gitignore文件都无法添加文件到版本控制,最后发现是缓存的原因,需要删除缓存再重新add git rm -rf --cached xxx

  8. Dubbo——配置

    一.配置原则 JVM 启动 -D 参数优先,这样可以使用户在部署和启动时进行参数重写,比如在启动时需改变协议的端口. XML 次之,如果在 XML 中有配置,则 dubbo.properties 中的 ...

  9. js面向对象入门

    通常我们写js以及调用: function init(){ console.log("init") } function load(){ console.log("loa ...

  10. TomCat概述

    作用: * 用来接收客户端的请求 * 处理请求, 把动态资源转换成了静态资源(web容器) * 给客户端响应 服务器的分类: * weblogic: oracle公司大型的JavaEE服务器收费的 * ...