From dfaecde8a3eebb5ee7c7aa5fe41cb73f76165d7f Mon Sep 17 00:00:00 2001 From: Jayway Liu <14022498+bluejayway@user.noreply.gitee.com> Date: Sat, 26 Sep 2026 16:19:02 +0800 Subject: [PATCH] =?UTF-8?q?test(worker):=20=E9=80=82=E9=85=8D=20PostgreSQL?= =?UTF-8?q?=20=E5=92=A8=E8=AF=A2=E9=94=81=E4=B8=8B=E7=9A=84=E7=AB=8B?= =?UTF-8?q?=E5=8D=B3=E9=87=8D=E8=AE=A4=E9=A2=86=E8=AF=AD=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PG 上 worker 持咨询锁会立即重认领 processing 任务,第二次 --once 被导入任务 抢占导致导出断言失败(该测试此前从未在 PG 上真正运行过)。第一次调用后把导入 任务置为 ready 模拟完成,两种后端行为一致 --- tests/test_worker_paths.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/tests/test_worker_paths.py b/tests/test_worker_paths.py index a08a0b1..a8a00a3 100644 --- a/tests/test_worker_paths.py +++ b/tests/test_worker_paths.py @@ -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(