添加对千米标准商品查询的测试
7 files changed
tree: fd8a2927b6c37309cb9c100d1f9ac96061d42e2e
  1. dubbo/
  2. tests/
  3. .gitignore
  4. LICENSE
  5. README.md
  6. requirements.txt
  7. setup.py
  8. test.sh
README.md

python-dubbo

Python Dubbo Client.

Installation

pip install python-dubbo

Usage

基础使用

from dubbo.client import DubboClient, ZkRegister

# 支持从Zk中获取服务的provider,支持根据provider的权重选择主机
zk = ZkRegister('127.0.0.1:2181')
dubbo_cli = DubboClient('com.qianmi.pc.api.GoodsQueryProvider', zk_register=zk)

# 支持不使用Zk,直接连接指定的远程主机
dubbo_cli = DubboClient('com.qianmi.pc.api.GoodsQueryProvider', host='127.0.0.1:20880')

admin_id = 'A000000'
result = dubbo_cli.call('listByIdString', admin_id)

如何定义参数

python-dubbo支持以下Java类型的参数:

  • bool 对应Python中的bool类型
  • int, long 对应Python中的int类型
  • float, double 对应Python中的float类型
  • java.lang.String 对应Python中的str类型
  • java.lang.Object 具体使用方式如下所示:
# 使用Java的对象类型
from dubbo.client import DubboClient, ZkRegister
from dubbo.codec.encoder import Object

# 创建channel对象
channel = Object('com.qianmi.pc.base.api.constants.ChannelEnum')
channel['name'] = 'D2C'

# 创建spu_query_request对象
spu_query_request = Object('com.qianmi.pc.item.api.spu.request.SpuQueryRequest')
spu_query_request['chainMasterId'] = 'A000000'
spu_query_request['channel'] = channel
spu_query_request['pageSize'] = 2000

# 创建consumer并执行查询操作
zk = ZkRegister('172.21.4.71:2181')
spu_query_provider = DubboClient('com.qianmi.pc.item.api.spu.SpuQueryProvider', zk_register=zk)
result = spu_query_provider.call('query', spu_query_request)

如何使用枚举(enum)类型作为参数

# 定义一个枚举类型的对象
channel = Object('com.qianmi.pc.base.api.constants.ChannelEnum')
# 定义参数`name`的值为枚举参数,之后使用该对象作为参数即可
channel['name'] = 'D2C'

Reference