dubbo-python
dubbo-python copied to clipboard
连接错误
zookeeper列表获得成功,执行方法错误,能否加个联系方式,帮忙处理下呢,感激了
什么错误,贴出来看看呢
NoProvider: DubboError(5050)
该问题有解决吗?我用这个库的时候也碰到类似的问题,NoProvider: DubboError(5050),提示provider和method找不到
conf = {
'name': 'ddjf-open-api-client',
'version': '1.2.0',
'organization': 'ddjf'
}
config = ApplicationConfig(conf)
service_interface = "com.ddjf.open.api.remoter.api.ILufaxLanService"
# registry包含了和zookeeper的连接,该对象需要缓存
registry = ZookeeperRegistry('192.168.19.203:2181', config)
user_provider = DubboClient(service_interface, registry)
print user_provider('checkLufaxId')
结果是:
dubbo_client.rpcerror.NoProvider: DubboError(5050): No provide name com.ddjf.open.api.remoter.api.ILufaxLanService
@Allenzzz user_provider = DubboClient(service_interface, registry, version='1.2.0') 这样试试看呢,接口的版本加在Client上面。确保一下Dubbo服务端也配置了版本号。
@JoeCao 按你说的方式,还以一样的5050错误
我也是同样的错误,服务端已经启动,用java是可以连的,请问有解决方案了吗
原因是 second = self._service_provides.get(interface, {})时永远为空 我怀疑这个方法里的 if node.startswith('jsonrpc'):
service_url = ServiceURL(node)
self._add_node(interface, service_url)
有问题,只有jsonrpc开头的才add_node了,其他的没有加进去,永远为空,烦请作者改下bug,方便其他人使用,多谢了
def _compare_swap_nodes(self, interface, nodes):
"""
比较,替换现有内存中的节点信息,节点url类似如下
jsonrpc://192.168.2.1:38080/com.ofpay.demo.api.UserProvider?
anyhost=true&application=demo-provider&default.timeout=10000&dubbo=2.4.10&
environment=product&interface=com.ofpay.demo.api.UserProvider&
methods=getUser,queryAll,queryUser,isLimit&owner=wenwu&pid=61578&
side=provider×tamp=1428904600188
首先将url转为ServiceUrl对象,然保持到缓存中
:param nodes: 节点列表
:return: 不需要返回
"""
if self._mutex.acquire():
# 存在并发问题,需要线程锁
try:
# 如果已经存在,首先删除原有的服务的集合
if interface in self._service_providers:
del self._service_providers[interface]
logger.debug("delete node {0}".format(interface))
for child_node in nodes:
node = urllib.unquote(child_node).decode('utf8')
logger.debug('child of node is {0}'.format(node))
if node.startswith('jsonrpc'):
service_url = ServiceURL(node)
self._add_node(interface, service_url)
except Exception as e:
logger.warn('swap json-rpc provider error %s', str(e))
finally:
self._mutex.release()
@ls960972314 dubbo-client-py
这个本来就是作为jsonrpc
协议的python
客户端,只能处理jsonrpc
协议的url. 你说的_service_provides
为空,请确认下服务端是否有发布暴露jsonrpc
协议接口。
好吧,其他协议不支持吗
@ls960972314 暴露这个JsonRPC接口只需要配置,不需要写代码,使用dubbo-rpc-jsonrpc 并在dubbo中配置protocol为jsonrpc协议 参考 https://github.com/ofpay/dubbo-rpc-jsonrpc
不支持其它协议 ,用起来不方便