#coding=utf8
import sys
from kazoo.client import KazooClient
import urllib
import json
import telnetlib
import socket
import dubbo_telnet
import unittest
def coondoubble_data(Host,Port,interface,method,param):
try:
# 初始化dubbo对象
conn = dubbo_telnet.connect(Host, Port)
# 设置telnet连接超时时间
conn.set_connect_timeout(10)
# 设置dubbo服务返回响应的编码
conn.set_encoding(‘utf8‘)
conn.invoke(interface, method, param)
# print conn.do("ls %s"%(interface) )
command = ‘invoke %s.%s("%s")‘%(interface,method,param)
# print command
return conn.do(command)
except Exception as e:
return e
def get_dubbo():
global Host
zk = KazooClient(hosts="{}:2181".format(Host))
zk.start()
urls = []
list = zk.get_children("dubbo")
for i in list:
# print i
if ‘pacific‘ in i:
# print i
gg = zk.get_children("/dubbo/{}/consumers".format(i))
if gg:
for j in gg:
url = urllib.unquote(j)
if url.startswith(‘dubbo:‘):
urls.append(url.split(‘?‘)[0].split(‘dubbo://‘)[1])
gg = zk.get_children("/dubbo/{}/providers".format(i))
if gg:
for j in gg:
url = urllib.unquote(j)
if url.startswith(‘dubbo:‘):
urls.append(url.split(‘?‘)[0].split(‘dubbo://‘)[1])
services = {}
for i in urls:
path, service = i.split(‘/‘)
if not services.get(path):
services.update({path: []})
services[path].append(service)
print json.dumps(services, indent=4)
if __name__ == ‘__main__‘:
# get_dubbo()
Host = ‘‘ # Doubble服务器IP
Port = # Doubble服务端口
interface = ‘。。。。。.api.service.ModelService‘ # 接口
method = ‘getModelVersion‘ # 方法
param = "" # 参数
data = coondoubble_data(Host, Port, interface, method, param)
print(data)
原文:https://www.cnblogs.com/slqt/p/11347232.html