美文网首页
python调用dubbo接口

python调用dubbo接口

作者: 王欢_d780 | 来源:发表于2020-09-15 15:19 被阅读0次

众所周知,Dubbo是Java分布式服务的一个非常重要的框架,在实际生产中有着广泛的应用。作为软件测试攻城狮,如果有在使用Java提供后台服务的大型项目中效力过,那么可能已经接触过Dubbo。


Dubbo框架自带了telnet的测试方案。那我们是否可以利用这个原理来实现对Dubbo服务接口的简单调用,从而实现使用python来测试dubbo接口呢?答案是肯定的,话不多说,直接上代码(放马)

import json

import telnetlib

class Dubbo(telnetlib.Telnet):

prompt = 'dubbo>'

    coding = 'utf8'

    def __init__(self, host=None, port=0):

        super().__init__(host, port)

        self.write(b'\n')

    def command(self, flag, str_=""):

        data = self.read_until(flag.encode())

        self.write(str_.encode(self.coding) + b"\n")

        return data

    def invoke(self, service_name, method_name, parms, parmstype='String'):

        items = ""

        lengthparmss = len(parms)

        i = 1

        for item in parms:

            if i < lengthparmss:

                if isinstance(item, str):

                    items += '\'{0}\','.format(item)

                else:

                    items += "{0},".format(item)

            else:

                if isinstance(item, str):

                    items += '\'{0}\''.format(item)

                else:

                    items += "{0}".format(item)

                i += 1

           command_str = "invoke %s.%s(" % (service_name, method_name) + items + ")"

           try:

                self.command(Dubbo.prompt, command_str)

                data = self.command(Dubbo.prompt, "")

                data = json.loads(data.decode(Dubbo.coding, errors='ignore').split('\n')[0].strip())

                return data

            except Exception as e:

                print(e)

                return "Failed!"

if __name__ == '__main__':

    # 服务ip地址和端口

    conn = Dubbo('*.*.*.*', ***)

    Dubbo.coding = 'gbk' # 在这个可以给出具体的参数和形式

    result = conn.invoke(

    # "连到dubbo ls下面的某个服务"

    "cn.touna.fund.api.PartnerRepayService",

    # "服务下的具体方法"

    "sendSmsCode",

    # 方法入参

    [{'applyid': 99200669, 'phone': "13534187661"}],

    )

    print(result)

上面的代码可以实现对Dubbo接口简单的调用,只需要知道服务,方法,参数就可以了。

是不是很简单,如果有需要可以参考一下,当然你还可以扩展,通过对不同dubbo参数类型和格式的扩展和封装,你也许可以将代码写的更加完善和健壮。

相关文章

  • python调用dubbo接口

    众所周知,Dubbo是Java分布式服务的一个非常重要的框架,在实际生产中有着广泛的应用。作为软件测试攻城狮,如果...

  • Seata- TCC

    1 dubbo接口用twophasebuisseness标注一组tcc接口时,调用方和被调用方都会有接口,如何识别...

  • 2020-06-04

    一、传统项目改造为Dubbo接口调用方式 改造思路:分为三个工程,调用接口层(facade)、实现层(servic...

  • 5年经验之谈 —— 接口测试测什么?这篇文章告诉你

    接口测试:基本功能 (1)接口协议(基于HTTP、HTTPS、Dubbo实现?) (2)接口调用方式(post、g...

  • dubbo接口调用总结

    1、需要知道对应的接口名称和调用方法名称,可以找开发要 2、需要配置nacos注册中心,可以找开发要地址 3、需要...

  • Duplicate spring bean id 问题调查

    问题背景:从本地调用服务器的dubbo接口进行测试 实现思路:基于IDEA+Spring+maven+Dubbo搭...

  • Dubbo-Directory

    一,Dubbo Directory功能介绍 Directory是Dubbo中的一个接口,主要用于缓存可以被调用的...

  • 命令行调用Dubbo服务

    Dubbo 服务端支持 telnet 调用,具体如下: telnet 连接到 dubbo 服务端 查看服务端接口列...

  • dubbo学习篇2 注解之 @Service 原理解析

    一.使用注解 在dubbo springboot 使用时,在需要调用的服务接口上使用@Service 即可将接口实...

  • 架构师成长之路之Dubbo接口一(快速入门)

    一、什么是Dubbo接口 Dubbo 接口是阿里巴巴开源的致力于提供高性能和透明化的RPC远程服务调用方案,以及S...

网友评论

      本文标题:python调用dubbo接口

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