From cbe890613ebff0288c34131b7c1be75d55448a96 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Michal=20=C4=8Ciha=C5=99?= Date: Wed, 19 Jun 2024 09:13:58 +0200 Subject: [PATCH] fix(component): update component alerts hourly This avoids too long task execution on large sites. Fixes WEBLATE-FB --- weblate/trans/tasks.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/weblate/trans/tasks.py b/weblate/trans/tasks.py index d8c5717f007a..8306f722d94f 100644 --- a/weblate/trans/tasks.py +++ b/weblate/trans/tasks.py @@ -322,7 +322,10 @@ def component_alerts(component_ids=None) -> None: if component_ids: components = Component.objects.filter(pk__in=component_ids) else: - components = Component.objects.all() + now = timezone.now() + components = Component.objects.annotate(hourmod=F("id") % 24).filter( + hourmod=now.hour + ) for component in components.prefetch(): with transaction.atomic(): component.update_alerts() @@ -708,9 +711,7 @@ def setup_periodic_tasks(sender, **kwargs) -> None: sender.add_periodic_task( crontab(hour=3, minute=45), repository_alerts.s(), name="repository-alerts" ) - sender.add_periodic_task( - crontab(hour=3, minute=55), component_alerts.s(), name="component-alerts" - ) + sender.add_periodic_task(3600, component_alerts.s(), name="component-alerts") sender.add_periodic_task( crontab(hour=0, minute=40), cleanup_suggestions.s(), name="suggestions-cleanup" )