feat(orchestrator): pool 异步化(ProcessPoolExecutor spawn + stage 追踪)

This commit is contained in:
2026-07-06 18:19:24 +08:00
parent 48a9058cb2
commit 66aa27e807
3 changed files with 54 additions and 1 deletions
+33 -1
View File
@@ -59,4 +59,36 @@ class TestTaskPool:
task2 = pool.submit(task_id="test_2", task_type="test")
assert len(pool._tasks) == 2
assert pool.get_status("test_1") == TaskState.PENDING
assert pool.get_status("test_2") == TaskState.PENDING
assert pool.get_status("test_2") == TaskState.PENDING
class TestTaskPoolStageAndAsync:
"""Test TaskPool stage tracking and async execution (Task 3)"""
def test_task_has_stage_field(self):
"""Test Task has stage field with default empty string"""
from sanguo_orchestrator.task import Task
t = Task(task_id="t1", task_type="cta")
assert t.stage == ""
def test_pool_submit_work_returns_future(self):
"""Test submit_work() returns Future from executor"""
from unittest.mock import MagicMock
from sanguo_orchestrator.pool import TaskPool
pool = TaskPool(max_workers=2)
pool.executor = MagicMock() # mock executor to avoid spawning real processes
mock_future = MagicMock()
pool.executor.submit.return_value = mock_future
fut = pool.submit_work("t1", func=lambda: 1)
assert fut is mock_future
pool.executor.submit.assert_called_once()
def test_pool_update_and_get_stage(self):
"""Test update_stage() and get_stage() methods"""
from sanguo_orchestrator.pool import TaskPool
from sanguo_orchestrator.task import Task
pool = TaskPool(max_workers=2)
pool.submit("t1", "cta")
pool.update_stage("t1", "回测中")
assert pool.get_stage("t1") == "回测中"
assert pool.get_task("t1").stage == "回测中"