test(worker): 适配 PostgreSQL 咨询锁下的立即重认领语义
Verify / verify (push) Failing after 1s
Verify / verify (pull_request) Failing after 0s

PG 上 worker 持咨询锁会立即重认领 processing 任务,第二次 --once 被导入任务
抢占导致导出断言失败(该测试此前从未在 PG 上真正运行过)。第一次调用后把导入
任务置为 ready 模拟完成,两种后端行为一致
This commit is contained in:
Jayway Liu
2026-09-26 16:20:40 +08:00
parent 9a5ab26014
commit dfaecde8a3
+5 -1
View File
@@ -6,7 +6,7 @@ import pytest
from django.core.management import call_command
from django.utils import timezone
from finance.models import FormulaExport
from finance.models import Dataset, FormulaExport
pytestmark = pytest.mark.django_db
@@ -20,6 +20,10 @@ def test_worker_processes_queued_import_and_reports_export_failure(workspace):
) as process_import:
call_command("import_worker", once=True)
process_import.assert_called_once_with(ds.pk)
# PostgreSQL 上 worker 持咨询锁会立即重认领 processing 任务:模拟导入完成,
# 否则第二次 --once 又被它抢占,轮不到下面的导出任务(SQLite 无咨询锁,
# 不走立即恢复路径,两种后端行为一致)。
Dataset.objects.filter(pk=ds.pk).update(status="ready")
export = FormulaExport.objects.create(dataset=ds, user=ds.created_by, context={})
with patch(