Build complete search segments

This commit is contained in:
qananasikq
2026-08-20 16:15:00 +03:00
parent be19d29a1d
commit 20b5d66178
3 changed files with 46 additions and 13 deletions
+19
View File
@@ -82,6 +82,16 @@ def run_mobilede_sync_search_task(
if not lock_acquired:
logger.info("mobile.de sync skipped: segment already running key=%s", segment_runtime_key)
return {"status": "skipped", "reason": "segment_already_running", "segment_key": segment_runtime_key}
blocked_for_ms = max(0, int(redis_client.pttl(MOBILEDE_SEARCH_ANTIBOT_BLOCK_KEY) or 0))
if blocked_for_ms:
retry_in_seconds = max(1, (blocked_for_ms + 999) // 1000)
_release_lock_if_owner(redis_client, segment_lock_key, lock_owner)
logger.warning(
"mobile.de search circuit breaker active: runtime=%s retry_in=%ss",
_mobilede_short_segment_label(segment),
retry_in_seconds,
)
raise self.retry(countdown=retry_in_seconds)
heartbeat_stop: Event | None = None
heartbeat_thread: Thread | None = None
watchdog_stop: Event | None = None
@@ -1145,6 +1155,15 @@ def run_mobilede_sync_search_task(
status_code = getattr(getattr(exc, "response", None), "status_code", None)
is_antibot_block = int(status_code or 0) in {401, 403, 429}
is_transient_request_error = _is_mobilede_transient_request_error(exc)
if is_antibot_block:
cooldown_seconds = MOBILEDE_ANTIBOT_BACKOFF_SECONDS
redis_client.set(MOBILEDE_SEARCH_ANTIBOT_BLOCK_KEY, "1", ex=cooldown_seconds)
logger.warning(
"mobile.de search circuit breaker opened: status=%s cooldown=%ss runtime=%s",
status_code,
cooldown_seconds,
_mobilede_short_segment_label(segment),
)
if refresh_cycle_id:
_mobilede_mark_refresh_cycle_reconciliation_unsafe(
redis_client,