diff --git a/hardware/opentrons_hardware/drivers/can_bus/driver.py b/hardware/opentrons_hardware/drivers/can_bus/driver.py index d7d04aafee6..8c1ffc68803 100644 --- a/hardware/opentrons_hardware/drivers/can_bus/driver.py +++ b/hardware/opentrons_hardware/drivers/can_bus/driver.py @@ -4,6 +4,7 @@ import asyncio import platform from typing import Optional, Union, Dict, Any +import concurrent.futures from can import Notifier, Bus, AsyncBufferedReader, Message @@ -49,6 +50,7 @@ def __init__(self, bus: Bus, loop: asyncio.AbstractEventLoop) -> None: self._loop = loop self._reader = AsyncBufferedReader(loop=loop) self._notifier = Notifier(bus=self._bus, listeners=[self._reader], loop=loop) + self._executor = concurrent.futures.ThreadPoolExecutor(max_workers=5) @classmethod async def build( @@ -113,7 +115,7 @@ async def send(self, message: CanMessage) -> None: is_fd=True, data=message.data, ) - await self._loop.run_in_executor(None, self._bus.send, m) + await self._loop.run_in_executor(self._executor, self._bus.send, m) async def read(self) -> CanMessage: """Read a message.