dubbo-python icon indicating copy to clipboard operation
dubbo-python copied to clipboard

连接错误

Open whybeyoung opened this issue 8 years ago • 12 comments

zookeeper列表获得成功,执行方法错误,能否加个联系方式,帮忙处理下呢,感激了

whybeyoung avatar Apr 18 '16 08:04 whybeyoung

什么错误,贴出来看看呢

JoeCao avatar May 10 '16 05:05 JoeCao

NoProvider: DubboError(5050)

songguohfut avatar Jul 18 '16 12:07 songguohfut

该问题有解决吗?我用这个库的时候也碰到类似的问题,NoProvider: DubboError(5050),提示provider和method找不到

ltiuaopaul avatar Oct 02 '16 12:10 ltiuaopaul

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 avatar Aug 15 '17 03:08 Allenzzz

@Allenzzz user_provider = DubboClient(service_interface, registry, version='1.2.0') 这样试试看呢,接口的版本加在Client上面。确保一下Dubbo服务端也配置了版本号。

JoeCao avatar Aug 15 '17 06:08 JoeCao

@JoeCao 按你说的方式,还以一样的5050错误

Allenzzz avatar Aug 15 '17 07:08 Allenzzz

我也是同样的错误,服务端已经启动,用java是可以连的,请问有解决方案了吗

ls960972314 avatar Oct 30 '17 11:10 ls960972314

原因是 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&timestamp=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 avatar Oct 30 '17 13:10 ls960972314

@ls960972314 dubbo-client-py这个本来就是作为jsonrpc协议的python客户端,只能处理jsonrpc协议的url. 你说的_service_provides为空,请确认下服务端是否有发布暴露jsonrpc协议接口。

wuwen5 avatar Oct 30 '17 13:10 wuwen5

好吧,其他协议不支持吗

ls960972314 avatar Oct 30 '17 13:10 ls960972314

@ls960972314 暴露这个JsonRPC接口只需要配置,不需要写代码,使用dubbo-rpc-jsonrpc 并在dubbo中配置protocol为jsonrpc协议 参考 https://github.com/ofpay/dubbo-rpc-jsonrpc

JoeCao avatar Oct 31 '17 01:10 JoeCao

不支持其它协议 ,用起来不方便

stone531 avatar Dec 02 '20 07:12 stone531