c++调用python接口_简单使用Python调用Dubbo服务接口

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

17feb49c-bbe2-4968-8068-548a812c5824

先上个无关紧要的图~!

但是……

Dubbo是Java亲和类的框架,不过它自带了telnet的invoke测试方案(重点)。

而且,你是一个只会Python的测试狗(会Java的走开~*-*),可能你有两种选择。

1.学Java语言

太懒,不想学,放弃。

2.使用Python语言

前面说过,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'')

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

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

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

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('')[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参数类型和格式的扩展和封装,你也许可以将代码写的更加完善和健壮。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值