zoukankan      html  css  js  c++  java
  • dubbo python

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

    关于Dubbo Hession协议:

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

    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:	%s'%url
            print 'Method:	%s'%method
            print 'Req:	%s'%req
            res=getattr(HessianProxy(url),method)(req)
            print 'Res:	%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对比:

  • 相关阅读:
    php DOC类型注释的用法
    Mysql 数据库更新错误
    Smarty初体验二 获取配置信息
    Smarty 模板初体验
    去网络视频广告方法——虽过时,但效果依然很好(亲测)
    织梦模板修改方法大全
    dede织梦:文章内容页调用
    织梦系统学习:文章页当前位置的写法(自认对SEO有用)
    ZOJ 3229 Shoot the Bullet
    URAL 1277 Cops and Thieves
  • 原文地址:https://www.cnblogs.com/SunshineKimi/p/12716790.html
Copyright © 2011-2022 走看看