fix: parallelize crewai

This commit is contained in:
Boris Arzentar 2025-06-04 16:39:34 +02:00
parent 042c122da0
commit 8c02676b4f
No known key found for this signature in database
GPG key ID: D5CC274C784807B7
3 changed files with 27 additions and 13 deletions

View file

@ -79,7 +79,14 @@ def get_crewai_router() -> APIRouter:
"applicant_2": payload.username2,
}
run_hiring_crew(user, applicants=applicants, number_of_rounds=2)
def run_crewai_in_thread():
run_hiring_crew(user, applicants=applicants, number_of_rounds=2)
async def run_crewai_async():
loop = asyncio.get_running_loop()
await loop.run_in_executor(None, run_crewai_in_thread)
await run_crewai_async()
return True
@ -91,13 +98,12 @@ def get_crewai_router() -> APIRouter:
),
):
from cognee import add, cognify
# from secrets import choice
# from string import ascii_letters, digits
# hash6 = "".join(choice(ascii_letters + digits) for _ in range(6))
# Set context based database settings if necessary
dataset_name = "Github"
await add(payload.feedback, node_set=["final_report"], dataset_name=dataset_name, user=user)
await cognify(datasets=dataset_name, is_stream_info_enabled=True, user=user)
await set_database_global_context_variables(dataset_name, user.id)
await add(payload.feedback, node_set=["final_report"], dataset_name=dataset_name)
await cognify(datasets=dataset_name, is_stream_info_enabled=True)
@router.websocket("/subscribe")
async def subscribe_to_crewai_info(websocket: WebSocket):

View file

@ -54,14 +54,17 @@ class CogneeIngestion(BaseTool):
return f"Error during ingestion: {str(e)}"
try:
loop = asyncio.get_event_loop()
try:
loop = asyncio.get_event_loop()
if not loop.is_running():
loop = asyncio.new_event_loop()
except RuntimeError:
loop = asyncio.new_event_loop()
if not loop.is_running():
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
nest_asyncio.apply(loop)
result = loop.run_until_complete(main())
return result

View file

@ -61,10 +61,15 @@ class CogneeSearch(BaseTool):
return f"Error: {str(e)}"
try:
loop = asyncio.get_event_loop()
try:
loop = asyncio.get_event_loop()
if not loop.is_running():
loop = asyncio.new_event_loop()
except RuntimeError:
loop = asyncio.new_event_loop()
if not loop.is_running():
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
nest_asyncio.apply(loop)