mirror of
https://github.com/dptech-corp/Uni-Lab-OS.git
synced 2025-12-17 13:01:12 +00:00
use call_async in all service to avoid deadlock
This commit is contained in:
@@ -336,7 +336,7 @@ class BaseROS2DeviceNode(Node, Generic[T]):
|
|||||||
res.response = ""
|
res.response = ""
|
||||||
return res
|
return res
|
||||||
|
|
||||||
def append_resource(req: SerialCommand_Request, res: SerialCommand_Response):
|
async def append_resource(req: SerialCommand_Request, res: SerialCommand_Response):
|
||||||
# 物料传输到对应的node节点
|
# 物料传输到对应的node节点
|
||||||
rclient = self.create_client(ResourceAdd, "/resources/add")
|
rclient = self.create_client(ResourceAdd, "/resources/add")
|
||||||
rclient.wait_for_service()
|
rclient.wait_for_service()
|
||||||
@@ -399,7 +399,7 @@ class BaseROS2DeviceNode(Node, Generic[T]):
|
|||||||
logger.info(f"更新物料{container_query_dict['name']}的数据{resource['data']} dict")
|
logger.info(f"更新物料{container_query_dict['name']}的数据{resource['data']} dict")
|
||||||
else:
|
else:
|
||||||
logger.info(f"更新物料{container_query_dict['name']}出现不支持的数据类型{type(resource)} {resource}")
|
logger.info(f"更新物料{container_query_dict['name']}出现不支持的数据类型{type(resource)} {resource}")
|
||||||
response = rclient.call(request)
|
response = await rclient.call_async(request)
|
||||||
# 应该先add_resource了
|
# 应该先add_resource了
|
||||||
res.response = "OK"
|
res.response = "OK"
|
||||||
# 如果driver自己就有assign的方法,那就使用driver自己的assign方法
|
# 如果driver自己就有assign的方法,那就使用driver自己的assign方法
|
||||||
|
|||||||
@@ -351,7 +351,7 @@ class HostNode(BaseROS2DeviceNode):
|
|||||||
except Exception as e:
|
except Exception as e:
|
||||||
self.lab_logger().error(f"[Host Node] Failed to create ActionClient for {action_id}: {str(e)}")
|
self.lab_logger().error(f"[Host Node] Failed to create ActionClient for {action_id}: {str(e)}")
|
||||||
|
|
||||||
def create_resource_detailed(
|
async def create_resource_detailed(
|
||||||
self,
|
self,
|
||||||
resources: list[Union[list["Resource"], "Resource"]],
|
resources: list[Union[list["Resource"], "Resource"]],
|
||||||
device_ids: list[str],
|
device_ids: list[str],
|
||||||
@@ -393,11 +393,11 @@ class HostNode(BaseROS2DeviceNode):
|
|||||||
},
|
},
|
||||||
ensure_ascii=False,
|
ensure_ascii=False,
|
||||||
)
|
)
|
||||||
response = sclient.call(request)
|
response = await sclient.call_async(request)
|
||||||
responses.append(response)
|
responses.append(response)
|
||||||
return responses
|
return responses
|
||||||
|
|
||||||
def create_resource(
|
async def create_resource(
|
||||||
self,
|
self,
|
||||||
device_id: str,
|
device_id: str,
|
||||||
res_id: str,
|
res_id: str,
|
||||||
@@ -451,7 +451,9 @@ class HostNode(BaseROS2DeviceNode):
|
|||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
|
||||||
return self.create_resource_detailed(resources, device_ids, bind_parent_id, bind_location, other_calling_param)
|
response = await self.create_resource_detailed(resources, device_ids, bind_parent_id, bind_location, other_calling_param)
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
def initialize_device(self, device_id: str, device_config: Dict[str, Any]) -> None:
|
def initialize_device(self, device_id: str, device_config: Dict[str, Any]) -> None:
|
||||||
"""
|
"""
|
||||||
|
|||||||
Reference in New Issue
Block a user