This commit is contained in:
Neo
2026-03-15 10:15:02 +08:00
parent 2dd217522c
commit 72bb11b34f
916 changed files with 65306 additions and 16102803 deletions

View File

@@ -132,7 +132,7 @@ class TestDequeue:
config_dict = {"tasks": ["ODS_MEMBER"], "flow": "api_ods"}
row = (
task_id, 42, json.dumps(config_dict), "pending", 1,
None, None, None, None, None,
None, None, None, None, None, None,
)
cur = _mock_cursor(fetchone_val=row)
conn = _mock_conn(cur)
@@ -152,7 +152,7 @@ class TestDequeue:
config_dict = {"tasks": ["ODS_MEMBER"], "flow": "api_ods"}
row = (
task_id, 42, json.dumps(config_dict), "pending", 1,
None, None, None, None, None,
None, None, None, None, None, None,
)
cur = _mock_cursor(fetchone_val=row)
conn = _mock_conn(cur)
@@ -322,14 +322,17 @@ class TestProcessLoop:
@pytest.mark.asyncio
async def test_process_once_skips_when_running(self, mock_get_conn, queue):
"""有 running 任务时不 dequeue"""
# _get_pending_site_ids 返回 [42]
# has_running(42) 返回 True
# 调用顺序_recover_zombie_tasks → _get_pending_site_ids → has_running
call_count = 0
def side_effect_conn():
nonlocal call_count
call_count += 1
if call_count == 1:
# _recover_zombie_tasks无僵尸任务
cur = _mock_cursor()
return _mock_conn(cur)
elif call_count == 2:
# _get_pending_site_ids
cur = _mock_cursor(fetchall_val=[(42,)])
return _mock_conn(cur)
@@ -372,10 +375,14 @@ class TestProcessLoop:
nonlocal call_count
call_count += 1
if call_count == 1:
# _recover_zombie_tasks无僵尸任务
cur = _mock_cursor()
return _mock_conn(cur)
elif call_count == 2:
# _get_pending_site_ids
cur = _mock_cursor(fetchall_val=[(42,)])
return _mock_conn(cur)
elif call_count == 2:
elif call_count == 3:
# has_running → False
cur = _mock_cursor(fetchone_val=(False,))
return _mock_conn(cur)
@@ -383,7 +390,7 @@ class TestProcessLoop:
# dequeue → 返回任务
row = (
task_id, 42, config_json, "pending", 1,
None, None, None, None, None,
None, None, None, None, None, None,
)
cur = _mock_cursor(fetchone_val=row)
return _mock_conn(cur)
@@ -402,9 +409,21 @@ class TestProcessLoop:
@pytest.mark.asyncio
async def test_process_once_no_pending(self, mock_get_conn, queue):
"""无 pending 任务时什么都不做"""
cur = _mock_cursor(fetchall_val=[])
conn = _mock_conn(cur)
mock_get_conn.return_value = conn
call_count = 0
def side_effect_conn():
nonlocal call_count
call_count += 1
if call_count == 1:
# _recover_zombie_tasks无僵尸任务
cur = _mock_cursor()
return _mock_conn(cur)
else:
# _get_pending_site_ids → 空
cur = _mock_cursor(fetchall_val=[])
return _mock_conn(cur)
mock_get_conn.side_effect = side_effect_conn
mock_executor = MagicMock()
await queue._process_once(mock_executor)