From 2c547bbf49626bf0398db72fa660a44c4fbf4a7d Mon Sep 17 00:00:00 2001 From: Marco Acierno Date: Sat, 9 Mar 2024 17:48:13 +0100 Subject: [PATCH] dummy lock --- backend/schedule/tasks.py | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/backend/schedule/tasks.py b/backend/schedule/tasks.py index 0b8f9d63c5..33a2d92446 100644 --- a/backend/schedule/tasks.py +++ b/backend/schedule/tasks.py @@ -13,7 +13,7 @@ from django.conf import settings import logging from integrations import slack - +from django.core.cache import cache from pycon.celery import app from schedule.models import ScheduleItemSentForVideoUpload from schedule.video_upload import ( @@ -367,7 +367,26 @@ def upload_schedule_item_video(*, sent_for_video_upload_state_id: int): sent_for_video_upload.save(update_fields=["status"]) +def lock_task(func): + # This is a dummy lock until we can get celery-heimdall + def wrapper(*args, **kwargs): + lock_id = f"celery_lock_{func.__name__}" + lock = cache.add(lock_id, "locked", timeout=60 * 60 * 1) + + if not lock: + logger.info("Task %s is already running, skipping", func.__name__) + return + + try: + return func(*args, **kwargs) + finally: + cache.delete(lock_id) + + return wrapper + + @app.task() +@lock_task def process_schedule_items_videos_to_upload(): statuses = ( ScheduleItemSentForVideoUpload.objects.filter(