Преглед изворни кода

allow return from run_in_thread (#3477)

Thomas Brandého пре 11 месеци
родитељ
комит
1c8bebcaf6
1 измењених фајлова са 12 додато и 3 уклоњено
  1. 12 3
      reflex/experimental/misc.py

+ 12 - 3
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)