Python使用Telnet远程调用Dubbo接口

最近公司项目使用了Python作CMS系统,但是数据分析和一些基础数据提供等需要用到Java来做,所以就是一个后台项目分成Java和Python来做,有一些数据就需要从Python端查出来再提供给Java使用,Python使用的是django,Java是Springboot,Python调Java可以使用Telnet调用Java的dubbo接口,Java调用Python用Spring提供的RestTemplate(详情另一篇文章https://blog.csdn.net/java_ying/article/details/82023680)

首先安装python环境乱七八糟的就不说了

直接安装我们需要的包

pip install dubbo_telnet 如果下载不下的童鞋可以去github直接下载然后手动解压/安装 链接https://github.com/WALL-E/dubbo-telnet-py

(这里使用的是python2.7 如果用3.6会遇到一些问题)

然后按照example 抄一份改参数即可


# -*- coding: utf-8 -*-
import dubbo_telnet
 
if __name__ == '__main__':
    Host = '127.0.0.1'  # Doubble服务器IP
    Port = 20883  # Doubble服务端口
 
    # 初始化dubbo对象
    conn = dubbo_telnet.connect(Host, Port)
 
    # 设置telnet连接超时时间
    conn.set_connect_timeout(500)
 
    # 设置dubbo服务返回响应的编码
    conn.set_encoding('utf-8')
 
    command = 'invoke com.hqjl.common.service.xxxxxxxxxx.method(param)'
    print (conn.do(command))

说一下最后那里

command = ‘invoke’ + dubbo 服务名 + 方法名 (参数)

访问类 可以通过dubbo-admin来看,详情见(https://blog.csdn.net/java_ying/article/details/82023932)

方法名不多说了

这个参数 我要说一下 如果直接调用服务端java 很多教程都是传递的json参数 而dubbo端接收的可能不是json

所以如果不是 请直接传一个list参数即可 換一種方法说就是不要写参数名 直接写参数

也就是 command = ‘invoke’ + dubbo 服务名 + 方法名 (‘1165’)

------------------------分割线------------------------

2019-10-11

今天和自家技术老大 讨论了这个事情,发现并不是那么简单

我理解其实这就是python模拟了cmd的telnet命令

在java的dubbo中序列化等等协议是有一些规定的。

并不是所有的dubbo接口都能通过这个方法调用成功

所以还是尽量不要用python去调用dubbo 或者再找一下其他方法

————————————————
版权声明:本文为CSDN博主「LittleYoungMan」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/java_ying/article/details/82023803

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值