From c3290d33a7e9fcef5468ad81917440e6a5536fa2 Mon Sep 17 00:00:00 2001 From: Mattias Thall Date: Tue, 26 May 2026 23:11:07 +0200 Subject: [PATCH] Reduce parallel YouTube request workers to avoid cookie invalidation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 8 simultaneous yt-dlp processes hitting video pages looks like a bot attack and causes YouTube to nuke the session cookies. Drop to: - Popular fetch view_count enrichment: 8→3 workers - Discovery search: 8→4 workers - Graph signal (featured channels): 8→3 workers Co-Authored-By: Claude Sonnet 4.6 --- backend/routers/channels.py | 2 +- backend/services/discovery.py | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/routers/channels.py b/backend/routers/channels.py index 41b1e53..38ce5d0 100644 --- a/backend/routers/channels.py +++ b/backend/routers/channels.py @@ -742,7 +742,7 @@ def _fetch_popular_task(channel_id: int, youtube_channel_id: str): if not video_ids: return - with ThreadPoolExecutor(max_workers=8) as pool: + with ThreadPoolExecutor(max_workers=3) as pool: futures = {pool.submit(ytdlp.fetch_video_metadata, vid): vid for vid in video_ids} results = {} for future in as_completed(futures): diff --git a/backend/services/discovery.py b/backend/services/discovery.py index 88828fb..02e20b5 100644 --- a/backend/services/discovery.py +++ b/backend/services/discovery.py @@ -112,7 +112,7 @@ def _search_and_store( except Exception: return [] - with ThreadPoolExecutor(max_workers=8) as pool: + with ThreadPoolExecutor(max_workers=4) as pool: futures = {pool.submit(_do_search, q): q for q in queries} for fut in as_completed(futures): for video in fut.result(): @@ -620,7 +620,7 @@ def update_graph_signal(db: Session, user_id: int): return [] featured_map: dict[str, list[str]] = {} - with ThreadPoolExecutor(max_workers=8) as pool: + with ThreadPoolExecutor(max_workers=3) as pool: futures = {pool.submit(_fetch, row["youtube_channel_id"]): row for row in sample} for fut in as_completed(futures): row = futures[fut]