File tree Expand file tree Collapse file tree 1 file changed +49
-0
lines changed
Expand file tree Collapse file tree 1 file changed +49
-0
lines changed Original file line number Diff line number Diff line change 1+ import anyio
2+ from pydantic import AnyUrl
3+
4+ from mcp .server .fastmcp import FastMCP
5+ from mcp .shared .memory import (
6+ create_connected_server_and_client_session as create_session ,
7+ )
8+
9+ _sleep_time_seconds = 0.01
10+ _resource_name = "slow://slow_resource"
11+
12+
13+ async def test_messages_are_executed_concurrently ():
14+ server = FastMCP ("test" )
15+
16+ @server .tool ("sleep" )
17+ async def sleep_tool ():
18+ await anyio .sleep (_sleep_time_seconds )
19+ return "done"
20+
21+ @server .resource (_resource_name )
22+ async def slow_resource ():
23+ await anyio .sleep (_sleep_time_seconds )
24+ return "slow"
25+
26+ async with create_session (server ._mcp_server ) as client_session :
27+ start_time = anyio .current_time ()
28+ async with anyio .create_task_group () as tg :
29+ for _ in range (10 ):
30+ tg .start_soon (client_session .call_tool , "sleep" )
31+ tg .start_soon (client_session .read_resource , AnyUrl (_resource_name ))
32+
33+ end_time = anyio .current_time ()
34+
35+ duration = end_time - start_time
36+ assert duration < 3 * _sleep_time_seconds
37+ print (duration )
38+
39+
40+ def main ():
41+ anyio .run (test_messages_are_executed_concurrently )
42+
43+
44+ if __name__ == "__main__" :
45+ import logging
46+
47+ logging .basicConfig (level = logging .DEBUG )
48+
49+ main ()
You can’t perform that action at this time.
0 commit comments