diff --git a/reflex/experimental/misc.py b/reflex/experimental/misc.py index fec0bb992..716d081b8 100644 --- a/reflex/experimental/misc.py +++ b/reflex/experimental/misc.py @@ -1,12 +1,21 @@ """Miscellaneous functions for the experimental package.""" import asyncio +from typing import Any -async def run_in_thread(func): +async def run_in_thread(func) -> Any: """Run a function in a separate thread. + To not block the UI event queue, run_in_thread must be inside inside a rx.background() decorated method. + Args: - func (callable): The function to run. + func (callable): The non-async function to run. + + Returns: + Any: The return value of the function. """ - await asyncio.get_event_loop().run_in_executor(None, func) + assert not asyncio.coroutines.iscoroutinefunction( + func + ), "func must be a non-async function" + return await asyncio.get_event_loop().run_in_executor(None, func)