From 52a1140f5d944af62a8b0b56b763b4f60556875c Mon Sep 17 00:00:00 2001 From: tcely Date: Tue, 20 May 2025 03:25:53 -0400 Subject: [PATCH] Wait for HTTP 429 for media and metadata download tasks --- tubesync/sync/tasks.py | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/tubesync/sync/tasks.py b/tubesync/sync/tasks.py index 78cc97b1..52c07533 100644 --- a/tubesync/sync/tasks.py +++ b/tubesync/sync/tasks.py @@ -233,10 +233,17 @@ def schedule_media_servers_update(): ) -def wait_for_errors(model, /, tn='sync.tasks.download_media_metadata'): +def wait_for_errors(model, /, *, task_name=None): + if task_name is None: + task_name=tuple(( + 'sync.tasks.download_media', + 'sync.tasks.download_media_metadata', + )) + elif isinstance(task_name, str): + task_name = tuple((task_name,)) window = timezone.timedelta(hours=3) + timezone.now() tqs = Task.objects.filter( - task_name=tn, + task_name__in=task_name, attempts__gt=0, locked_at__isnull=True, run_at__lte=window, @@ -484,7 +491,7 @@ def download_media_metadata(media_id): log.info(f'Task for ID: {media_id} / {media} skipped, due to task being manually skipped.') return source = media.source - wait_for_errors(media) + wait_for_errors(media, task_name='sync.tasks.download_media_metadata') try: metadata = media.index_metadata() except YouTubeError as e: @@ -637,6 +644,7 @@ def download_media(media_id, override=False): # should raise an exception to avoid this return + wait_for_errors(media, task_name='sync.tasks.download_media') filepath = media.filepath container = format_str = None log.info(f'Downloading media: {media} (UUID: {media.pk}) to: "{filepath}"')