fix: Execute event manager callbacks in asyncio thread (#5150)
Execute event manager callbacks in asyncio thread
This commit is contained in:
parent
bb703f6e0d
commit
b692ef7848
4 changed files with 33 additions and 19 deletions
|
|
@ -1,4 +1,5 @@
|
|||
import asyncio
|
||||
import time
|
||||
from typing import Any
|
||||
from unittest.mock import MagicMock
|
||||
|
||||
|
|
@ -17,6 +18,11 @@ async def create_event_queue():
|
|||
return asyncio.Queue()
|
||||
|
||||
|
||||
def blocking_cb(manager, event_type, data):
|
||||
time.sleep(0.01)
|
||||
manager.send_event(event_type=event_type, data=data)
|
||||
|
||||
|
||||
class ComponentForTesting(Component):
|
||||
"""Test component that implements basic functionality."""
|
||||
|
||||
|
|
@ -39,6 +45,8 @@ async def test_component_message_sending():
|
|||
queue = await create_event_queue()
|
||||
event_manager = EventManager(queue)
|
||||
|
||||
event_manager.register_event("on_message", "message", callback=blocking_cb)
|
||||
|
||||
# Create component
|
||||
component = ComponentForTesting()
|
||||
component.set_event_manager(event_manager)
|
||||
|
|
@ -196,7 +204,8 @@ async def test_component_streaming_message():
|
|||
"""Test component's streaming message functionality."""
|
||||
queue = await create_event_queue()
|
||||
event_manager = EventManager(queue)
|
||||
event_manager.register_event("on_token", "token")
|
||||
|
||||
event_manager.register_event("on_token", "token", blocking_cb)
|
||||
|
||||
# Create a proper mock vertex with graph and flow_id
|
||||
vertex = MagicMock()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue