mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-10 08:38:30 +00:00
This fix resolves issue #3730 where crews would hang when run with asyncio.to_thread() if they used async tools. The problem was that asyncio.run() was being called in tool execution code, which fails when there's already an event loop running in the current thread. Changes: - Added run_coroutine_sync() utility function that safely runs coroutines in both sync and async contexts - Updated CrewStructuredTool.invoke() to use run_coroutine_sync() - Updated BaseTool.run() to use run_coroutine_sync() - Added comprehensive tests for asyncio tool execution scenarios The fix ensures that async tools work correctly whether the crew is: - Run synchronously with crew.kickoff() - Run asynchronously with crew.kickoff_async() - Run in a thread pool with asyncio.to_thread(crew.kickoff) Fixes #3730 Co-Authored-By: João <joao@crewai.com>
4.4 KiB
4.4 KiB