From 43b39f400273c9d66154a0e4967549ee9c67578d Mon Sep 17 00:00:00 2001 From: Sem van der Hoeven Date: Fri, 2 Jun 2023 11:40:13 +0200 Subject: [PATCH] fix camera coroutines not being awaited --- src/camera/camera/camera_controller.py | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/camera/camera/camera_controller.py b/src/camera/camera/camera_controller.py index 46c22d35..67d29968 100644 --- a/src/camera/camera/camera_controller.py +++ b/src/camera/camera/camera_controller.py @@ -28,7 +28,7 @@ class CameraController(Node): self.server = None self.event_loop = None - self.websocket_thread = threading.Thread(target=self.start_websocket_server) + self.websocket_thread = threading.Thread(target=self.start_listening) self.websocket_thread.start() self.video_thread = threading.Thread(target=self.handle_video_connection) @@ -50,11 +50,12 @@ class CameraController(Node): return response - async def handle_video_connection(self): - asyncio.run(self.send_video()) + def handle_video_connection(self): + self.get_logger().info('Starting video thread') + asyncio.ensure_future(self.send_video(), loop=self.event_loop) async def send_video(self): - self.get_logger().info('Starting video thread') + self.get_logger().info('Starting sending video') vid = cv2.VideoCapture(0) # vid.set(cv2.CAP_PROP_FRAME_WIDTH, RES_4K_W) @@ -73,6 +74,10 @@ class CameraController(Node): except Exception as e: self.get_logger().error('Something went wrong while reading and sending video: ' + str(e)) + def start_listening(self): + self.get_logger().info('Starting listening for websocket connections') + asyncio.run(self.start_websocket_server()) + async def start_websocket_server(self): self.get_logger().info('Starting websocket server for video') self.event_loop = asyncio.get_event_loop()