mirror of
https://github.com/langchain-ai/langgraph.git
synced 2026-08-21 23:22:27 +02:00
57 lines
1.4 KiB
Python
57 lines
1.4 KiB
Python
import os
|
|
import subprocess
|
|
import sys
|
|
|
|
|
|
def test_run_pool_size_one_still_allows_parallel_runs() -> None:
|
|
script = r"""
|
|
import asyncio
|
|
import time
|
|
from typing_extensions import TypedDict
|
|
from saf_python_sdk.advanced_graph import AdvancedStateGraph, Context, timer_condition
|
|
from saf_python_sdk.types import Command, Send
|
|
|
|
|
|
class RunState(TypedDict):
|
|
done: bool
|
|
|
|
|
|
async def wait_node(ctx: Context, _: object, state: RunState) -> Command:
|
|
await ctx.wait_for(timer_condition(seconds=0.2))
|
|
return Command(goto=Send("finish_node", None), update=state)
|
|
|
|
|
|
async def finish_node(_: object, state: RunState) -> dict[str, bool]:
|
|
return {"done": True}
|
|
|
|
|
|
async def main() -> None:
|
|
graph = AdvancedStateGraph(RunState)
|
|
graph.add_entry_node(wait_node)
|
|
graph.add_finish_node(finish_node)
|
|
compiled = graph.compile()
|
|
started = time.perf_counter()
|
|
await asyncio.gather(
|
|
compiled.ainvoke({"done": False}),
|
|
compiled.ainvoke({"done": False}),
|
|
)
|
|
elapsed = time.perf_counter() - started
|
|
print(f"{elapsed:.6f}")
|
|
|
|
|
|
asyncio.run(main())
|
|
"""
|
|
env = os.environ.copy()
|
|
env["LANGGRAPH_RUN_POOL_SIZE"] = "1"
|
|
env.setdefault("LANGGRAPH_NODE_POOL_SIZE", "2")
|
|
completed = subprocess.run(
|
|
[sys.executable, "-c", script],
|
|
env=env,
|
|
capture_output=True,
|
|
text=True,
|
|
check=True,
|
|
)
|
|
elapsed = float(completed.stdout.strip().splitlines()[-1])
|
|
assert elapsed < 0.35, completed.stdout
|
|
|