diff --git a/idom/core/layout.py b/idom/core/layout.py index d8a0e5cef..47b7bbc55 100644 --- a/idom/core/layout.py +++ b/idom/core/layout.py @@ -268,9 +268,10 @@ def __repr__(self) -> str: class _ElementQueue: - __slots__ = "_queue", "_pending" + __slots__ = "_loop", "_queue", "_pending" def __init__(self) -> None: + self._loop = asyncio.get_event_loop() self._queue: "asyncio.Queue[AbstractElement]" = asyncio.Queue() self._pending: Set[int] = set() @@ -278,7 +279,7 @@ def put(self, element: AbstractElement) -> None: element_id = id(element) if element_id not in self._pending: self._pending.add(element_id) - self._queue.put_nowait(element) + self._loop.call_soon_threadsafe(self._queue.put_nowait, element) return None async def get(self) -> AbstractElement: