意见箱
恒创运营部门将仔细参阅您的意见和建议,必要时将通过预留邮箱与您保持联络。感谢您的支持!
意见/建议
提交建议

dubbo python

来源:恒创科技 编辑:恒创科技编辑部
2022-09-22 00:08:00

本文主要介绍使用​​Python​​​调用Hession协议​​dubbo​​接口示例。

关于Dubbo Hession协议:

Dubbo本身支持多种远程调用方式,例如Dubbo RPC(二进制序列化 + tcp协议)、http invoker(二进制序列化 + http协议)、​​hessian​​(二进制序列化 + http协议)、WebServices (文本序列化 + http协议)等。


dubbo python

Dubbo将这些协议的实现进行了封装了,无论是服务端(开发服务)还是客户端(调用服务),都不需要关心协议的细节,只需要在配置中指定使用的协议即可,从而保证了服务提供方与服务消费方之间的透明。

如果我们使用Dubbo的服务注册中心组件,这样服务提供方将服务发布到注册的中心,只是将服务的名称暴露给外部,而服务消费方只需要知道注册中心和服务提供方提供的服务名称,就能够透明地调用服务。

​​Python​​调用Hession协议接口基本流程如下:

1. 下载安装Python Hessian库,地址:https://github.com/theatlantic/python-​​hessian​​,或者pip install python-hessian进行安装

2. 定义Hession接口的服务、接口、方法名称

3. 使用protocol.object_factory方法,调用该方法参数构造方法,构造调用参数

4. 使用HessianProxy方法,调用接口

示例代码:

# -*- coding:utf-8 -*-
from pyhessian.client import HessianProxy
from pyhessian import protocol
import json

def InvokeHessian(service,interface,method,req,retcode='000000'):
try:
url='http://192.168.0.1:10883/'+service+'.'+interface

print 'URL:\t%s'%url
print 'Method:\t%s'%method
print 'Req:\t%s'%req
res=getattr(HessianProxy(url),method)(req)
print 'Res:\t%s'%json.dumps(res,ensure_ascii=False)

except Exception,e:
print e


if __name__ == '__main__':
service='com.service.common.api.service'
interface='TestHessianService'
method='testHessian'
req=protocol.object_factory('com.service.common.api.service.model.req.TestHessianRequest',
param1='lovesoo',param2=10086)

InvokeHessian(service, interface, method,req)

几种rpc对比:

dubbo python_python



上一篇: 租用美国服务器:潜在的风险与应对策略。 下一篇: MongoDB 5.0 扩展开源文档数据库操作