async def _list_members(self, request): timeout_seconds = request.timeout_seconds if 0 == timeout_seconds: return notification_service_pb2.ListMembersResponse( return_code=notification_service_pb2.ReturnStatus.SUCCESS, return_msg='', members=[ member_to_proto(member) for member in self.ha_manager.get_living_members() ]) else: start = time.time() members = self.ha_manager.get_living_members() async with self.member_updated_condition: while time.time() - start < timeout_seconds: try: await asyncio.wait_for( self.member_updated_condition.wait(), timeout_seconds - time.time() + start) members = self.ha_manager.get_living_members() break except asyncio.TimeoutError: pass return notification_service_pb2.ListMembersResponse( return_code=notification_service_pb2.ReturnStatus.SUCCESS, return_msg='', members=[member_to_proto(member) for member in members])
def notifyNewMember(self, request, context): try: return self._notify_new_member(request) except Exception as e: return notification_service_pb2.ListMembersResponse( return_code=notification_service_pb2.ReturnStatus.ERROR, return_msg=str(e))
async def _list_members(self, request): timeout_seconds = request.timeout_seconds time.sleep(timeout_seconds) # this method is used in HA mode, so we just return an empty list here. return notification_service_pb2.ListMembersResponse( return_code=notification_service_pb2.ReturnStatus.SUCCESS, return_msg='', members=[])