Closed cqrichard2018 closed 4 years ago
不知道是不是通过jmeter调用,没有带invoker的原因, handler = handler_map.get(msg.service_name.decode(), {}).get(msg.method_name.decode())
print("================================================================")
print(msg.service_name.decode())
print(msg.method_name.decode())
print("================================================================")
结果: 如果是这个原因,不知道能不能解决这个问题,谢谢
确认一下:dubbo-py作为server端,jmeter是客户端对吗? 模拟的service是怎么定义的? 请把错误信息贴一下,最好能把抓的包也放上去
dubbo-py作为server端,jmeter是客户端,问题已经解决了,是jmeter发送消息时,服务端要对handler单独进行处理。 请问有方法可以在service不停止的情况下,动态新增接口,方法或者动态更新接口对应的方法吗
动态新增和更新方法再调用service.add_method就可以了,内部就是维护了一个service和handler的map,add_method所做的就是更新这个map。
大佬,我现在遇到一个棘手的问题,我目前可以在我自己的电脑上开启dubbo服务,并成功注册到本机的zk上,然后可以调用成功。但是现在我要把dubbo服务移植到另外一个dubbo服务上(真实环境), 这个可以嘛? 直接将server.py 中self._host改为对应地远程dubbo admin地址?我试了下,好像不行。 def init(self, port, app, group="open-platform",timeout=30000,owner="member",dubbo_version='2.5.3',dubbo_admin='127.0.0.1'): self._host = get_pub_ip()
大佬,我现在遇到一个棘手的问题,我目前可以在我自己的电脑上开启dubbo服务,并成功注册到本机的zk上,然后可以调用成功。但是现在我要把dubbo服务移植到另外一个dubbo服务上(真实环境), 这个可以嘛? 直接将server.py 中self._host改为对应地远程dubbo admin地址?我试了下,好像不行。 def init(self, port, app, group="open-platform",timeout=30000,owner="member",dubbo_version='2.5.3',dubbo_admin='127.0.0.1'): self._host = get_pub_ip()
没有get到你的点,能把具体的错误贴一下吗? 当前实现里面,listen的是0.0.0.0,self._host是获取本机的public ip地址注册到zk上。
是我理解错误了,只需要注册到对应的远端zk上,provider写本地服务器就解决问题了,多谢
dubbo-py作为server端,jmeter是客户端,问题已经解决了,是jmeter发送消息时,服务端要对handler单独进行处理。 请问有方法可以在service不停止的情况下,动态新增接口,方法或者动态更新接口对应的方法吗
解决方法能贴一下么?
对比了一下,开发说需要加group,就在server中增加了group,timeout 同时在url = f'dubbo://{self._host}:{self._port}/{service}?anyhost=true增加了{self._app}/ 但是增加了后调用依然有问题,我是通过jmeter调用的,麻烦大神帮忙看看是怎么回事,谢谢 url = f'dubbo://{self._host}:{self._port}/{self._app}/{service}?anyhost=true class DubboService(object): ''' Dubbo service class, provide dubbo service:
handler ''' def init(self, port, app, group="open-platform",timeout=30000,owner="member",dubbo_version='2.5.3'): self._host = get_pub_ip() self._port = port self._app = app self._dubbo_version = dubbo_version self._services = {} # {'service-1': {method1: handler-1, method2: handler-2}} self._server = _ServerThread(_DubboServer(('0.0.0.0', self._port), _get_dubbo_request_handler(self._services)))
by Richard
def register(self, zk, version='1.0.0', revision='1.0.0'): client = KazooClient(zk) client.start() for service, methods in self._services.items(): logging.info(f'register service "{service}", methods "{methods}" to zookeeper "{zk}"')
url = f'dubbo://{self._host}:{self._port}/{service}?anyhost=true&application={self._app}&dubbo={self._dubbo_version}&interface={service}&methods={",".join(methods)}&pid={next(_pid_gen)}&revision={revision}&side=provider×tamp={get_timestamp()}&version={version}'