iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python调用基于Dubbo的Hess
  • 374
分享到

Python调用基于Dubbo的Hess

PythonDubboHess 2023-01-31 02:01:42 374人浏览 薄情痞子

Python 官方文档:入门教程 => 点击学习

摘要

dubbo本身支持多种远程调用方式,例如Dubbo rpc(二进制序列化 + tcp协议)、Http invoker(二进制序列化 + http协议)、hessian(二进制序列化 + http协议)、WEBServices (文本序列

dubbo本身支持多种远程调用方式,例如Dubbo rpc(二进制序列化 + tcp协议)、Http invoker(二进制序列化 + http协议)、hessian(二进制序列化 + http协议)、WEBServices (文本序列化 + http协议)等。
    Dubbo是支持hessian+http协议调用的,hessian是一种二进制序列化的方式。咱们用python调用的dubbo的时候,就是用hessian+http的方式调用,所以dubbo项目要配置使用hessian方式序列化,如果小伙伴要用Python调用的时候,注意要找开发小哥哥在项目里面改成hessian方式的序列化,也就是改个配置文件的事,不影响原来的项目,如下图:

   咱们用python调用的时候,hessian+http这种方式调用,需要安装一个第三方模块,python-hessian这个模块,直接pip安装即可:

 

 

当然我们要调用dubbo接口的话,要知道dubbo接口的调用地址、方法、入参对象和入参,这个就需要开发小哥哥提供给你文档了。

如果没有文档的话,就需要你能看懂java和dubbo的代码了。我这里没有文档,就直接说怎么找这些咱们需要用到的。

 

1、先找到调用地址、接口、方法。

   dubbo是带有服务监控的功能的,这个都有,管开发要地址就行,这个里面可以看到你要测的服务,他里面的地址、方法,如下图,我们可以看到在dubbo服务监控里面有个Helloapi的服务:

    然后我们带点这个服务进去,就可以看到这个服务是部署在哪个服务器上的,然后点这个服务器的ip进去,就可以看到调用地址、接口、和方法,分别是:

    调用地址:http://192.168.1.100:8181/api/yz.dubbo.api.HelloApi ,#那个页面里写的是hessian,咱们用的是http协议发送的,这里咱们用的时候就改成http

    方法:hello

     如下图:
       

 

 

2、找到入参对象和入参

   通过dubbo的服务监控,我们可以获得调用地址、接口,入参对象和入参就得看代码了,我们打开项目代码,看到入参类型是在yz.dubbo.api下面的param包里面的Param对象,那么入参对象就是yz.dubbo.api.param.Param,然后我们可以看到这个对象里面有几个属性,也就是它的入参,一个字符串类型的sth,一个整形数组ints,一个字符串键值对maps,对应到咱们python的数据类型就是一个字符串,一个list,一个字典。

   入参对象:yz.dubbo.api.param.Param
    入参:sth、ints、maps


3、调用

   通过上面的东西,咱们调用的dubbo需要用到的东西全部都准备好了,咱们封装一个函数去调用,下面是代码,写好了注释

复制代码
from pyhessian.client import HessianProxy
#从pyhessian导入HessianProxy,用它来发请求
from pyhessian import protocol
#这个是用来进行把咱们python的数据类型序列化成二进制的
 
def dubbo_api(url,interface,method,param_obj,**kwargs):
    '''
    :param url: url地址
    :param interface: 接口名称,因为这里可能还有别的服务要测,接口名不一样,这里定义成变量
    :param method: 调用哪个方法
    :param param_obj: 入参的对象
    :param kwargs: 这个用关键字参数,因为每个接口的参数都不一样,不固定,所以这里用关键字参数
    :return:
        '''
    req_param = protocol.object_factory(param_obj,**kwargs)
    #这个是用来构造二进制的入参的,也就是把入参序列化
    try:#用try捕捉一下异常
        req_obj = HessianProxy(url+interface)
        #这个req是生成一个请求对象
        res = getattr(req_obj,method)(req_param)
        #getattr是python的内置方法,获取对象的方法,咱们从构造的请求对象里面获取到方法,然后调用,把前面生成的
            #序列化好的参数传进去,然后获取到返回的数据
    except Exception as e:
        print('有异常了,异常信息是:%s'%e)
        res = {"msg":"异常:%s"%e,"code":300}
        #这个是自己定义的异常,如果调用出错了,就返回这个
    return res
if __name__ == '__main__':
    url = 'http://192.168.1.100:8181/api/'
    interface = 'yz.dubbo.api.HelloApi'
    method = 'hello'
    param_obj = 'yz.dubbo.api.param.Param'
    params = {"sth":"dubbo","ints":[1,2,3],"maps":{"name":"dubbo"}}
    #这个入参,为了不定义多个变量,咱们把它写成字典形式的,就和stu=dubbo这种方式调用是一样的
    over = dubbo_api(url,interface,method,param_obj,**params)
    #测试调用一下
    print(over)#打印结果
复制代码

 

运行结果看下图:

   

 

步骤写的可能有点多,但是具体实现起来很简单,快去试试吧。

--结束END--

本文标题: Python调用基于Dubbo的Hess

本文链接: https://www.lsjlt.com/news/186941.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python调用基于Dubbo的Hess
    Dubbo本身支持多种远程调用方式,例如Dubbo RPC(二进制序列化 + tcp协议)、http invoker(二进制序列化 + http协议)、hessian(二进制序列化 + http协议)、WebServices (文本序列...
    99+
    2023-01-31
    Python Dubbo Hess
  • 基于SpringBoot的Dubbo泛化调用的实现代码
    目录1、服务端定义1.1 服务定义及实现1.2 服务提供者配置1.3 启动类1.4 pom文件2、消费端定义2.1 Dubbo配置类2.2 启动类2.3 pom文件3、 运行结果4 ...
    99+
    2024-04-02
  • Golang基于泛化调用与Nacos实现Dubbo代理
    目录前言准备实现项目结构go.mod返回数据格式获取 nacos 元信息泛化调用提供 http 服务启动效果前言 由于工作中使用的 rpc 框架是 dubbo,经常需要调试不同环境的...
    99+
    2023-05-14
    Golang实现Dubbo代理 Golang Dubbo代理 Golang Dubbo
  • Golang基于泛化调用与Nacos实现Dubbo代理的方法是什么
    这篇“Golang基于泛化调用与Nacos实现Dubbo代理的方法是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Gol...
    99+
    2023-07-05
  • 编写python调用dubbo接口hes
    引子今天有小伙伴问到了怎么用python调用dubbo的接口的方法,就随便写了这么一篇文章。其实dubbo接口可以使用loadrunner、jmeter等完成,最好是熟悉java语言的,那么编写起来就丝滑了很多哦那么用python来调用其实...
    99+
    2023-01-31
    接口 python dubbo
  • 基于dubbo分组group的一些总结
    目录服务分组分组聚合总结服务分组 1.当一个接口有多种实现时,可用使用group分组。 实现代码如下: package com.xxx.service; public interf...
    99+
    2023-03-21
    dubbo分组group dubbo分组 dubbo group
  • 基于Docker部署Dubbo+Nacos服务的过程
    目录一、说明二、部署 Nacos 注册中心三、部署 Dubbo 服务3.1. 部署 provider 服务3.2. 部署 consumer 服务四、样例工程 一、说明 本文介绍基于 ...
    99+
    2023-02-27
    Docker部署Dubbo+Nacos服务 Docker部署Dubbo Docker部署Nacos服务
  • 基于dubbo的分布式架构怎么实现
    本篇内容介绍了“基于dubbo的分布式架构怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!前言现在越来越多的互联网公司还是将自己公司的...
    99+
    2023-06-05
  • Python调用ChatGPT制作基于Tkinter的桌面时钟
    目录描述代码效果说明描述 给ChatGPT的描述内容: python在桌面上显示动态的文字,不要显示窗口边框。窗口背景和标签背景都是透明的,但标签内的文字是有颜色。使用tkinter...
    99+
    2023-03-23
    Python ChatGPT制作桌面时钟 Python制作桌面时钟 Python时钟
  • 基于python实现rpc远程过程调用
    目录基于python实现RPC的demo前言一、主要内容二、实现步骤1. 进程间的通信2. 异步回调实现思路总结基于python实现RPC的demo 这是一个远程过程调用(RPC)的...
    99+
    2024-04-02
  • 基于python实现Pycharm断点调试
    在Pycharm里设置断点如下: 这样启动debug模式后(Shift+F9),程序就会暂停在断点处。 如上面所示,暂停在第15行处,可以看到程序已经执行过的各种参数值。 注意...
    99+
    2024-04-02
  • dubbo调用的方式有哪些
    Dubbo调用方式有以下几种: 同步调用:发送请求后,等待服务提供者返回结果后再返回。 异步调用:发送请求后,不等待服务提供...
    99+
    2023-10-22
    dubbo
  • dubbo异步调用的原理是什么
    Dubbo异步调用的原理是通过使用线程池来实现异步调用。首先,服务消费者发送请求给服务提供者,然后服务提供者将请求放入线程池中进行处...
    99+
    2023-10-23
    dubbo
  • Dubbo异步调用的实现介绍
    目录前言1、异步调用实现2、异步调用特殊说明前言 Dubbo不只提供了堵塞式的的同步调用,同时提供了异步调用的方式。这种方式主要应用于提供者接口响应耗时明显,消费者端可以利用调用接口...
    99+
    2024-04-02
  • Python怎么调用ChatGPT制作基于Tkinter的桌面时钟
    本文小编为大家详细介绍“Python怎么调用ChatGPT制作基于Tkinter的桌面时钟”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python怎么调用ChatGPT制作基于Tkinter的桌面时钟”文章能帮助大家解决疑惑,下面跟着小...
    99+
    2023-07-05
  • 基于python如何实现rpc远程过程调用
    这篇文章主要介绍“基于python如何实现rpc远程过程调用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“基于python如何实现rpc远程过程调用”文章能帮助大家解决问题。一、主要内容所谓RPC,...
    99+
    2023-07-02
  • 基于Feign实现异步调用
    目录一、背景二、使用feign理由三、解决方案四、demo代码实现4.1 接口编写4.2 接口发布4.3 调用4.4 结果(很明显,是异步调用) 五、问题一、背景 希望将h...
    99+
    2024-04-02
  • 基于Python的selenium
    一、安装 1.1安装Python,安装Python时需要勾选增加环境变量 如果之前已经安装过Python,需要将Python相关文件以及环境变量删除 1.2安装成功:在命令行界面下输入Python,最...
    99+
    2023-09-15
    python selenium pycharm
  • 基于Scala和Java方法的相互调用
    目录在Java中调用Scala的方法呢?1.首先是静态方法2. JAVA中调用Scala的方法3.Scala中的非静态方法4.Java中的调用scala中调用java方法报错在Sca...
    99+
    2024-04-02
  • dubbo服务之间是怎么调用的
    Dubbo服务之间的调用是通过远程过程调用(RPC)实现的。在Dubbo中,服务提供者将自己的服务发布到注册中心,并将自己的地址注册...
    99+
    2023-10-23
    dubbo
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作