From e71224ef5475d7b878912a71e68f7c80810c0eaf Mon Sep 17 00:00:00 2001 From: Light1YT Date: Sat, 13 Jun 2026 12:44:18 +0500 Subject: [PATCH] =?UTF-8?q?fix(scrapers):=20commit=20outer=20tx=20=D0=B2?= =?UTF-8?q?=20domrf=5Fcatalog=20scrape=5Fcatalog=5Fbatch=20(#1227)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit begin_nested() лишь RELEASE'ит SAVEPOINT — без db.commit() все UPDATE цен откатывались при db.close() в Celery task. Зеркалит правильный паттерн scrape_catalog_objects (domrf_catalog_object.py:460): try- commit/except-rollback в конце функции. 50 catalog тестов зелёные. Closes #1227 --- backend/app/services/scrapers/domrf_catalog.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/backend/app/services/scrapers/domrf_catalog.py b/backend/app/services/scrapers/domrf_catalog.py index b0cfd052..43eae883 100644 --- a/backend/app/services/scrapers/domrf_catalog.py +++ b/backend/app/services/scrapers/domrf_catalog.py @@ -553,6 +553,17 @@ async def scrape_catalog_batch( else: stats["failed"] += 1 + # Commit outer transaction: SAVEPOINT (`begin_nested`) в upsert_catalog_data + # лишь RELEASE'ит внутренний SAVEPOINT, но outer tx остаётся autobegin'd — + # без commit() все UPDATE'ы (цены, отделка, catalog_updated_at) откатятся + # при db.close() в Celery task. Зеркалит scrape_catalog_objects в + # domrf_catalog_object.py:460. Issue #1227. + try: + db.commit() + except Exception: + db.rollback() + raise + logger.info( "scrape_catalog_batch done: total=%d success=%d failed=%d fields_total=%d", stats["total"],