From e9739bab45455875ca95239b53345551ac0de90c Mon Sep 17 00:00:00 2001 From: Markos Gogoulos Date: Fri, 10 Nov 2023 16:06:17 +0200 Subject: [PATCH] Feat celery run (#860) * avoid calling post save signals * remove stale celery ids that prevent new services from starting --- deploy/docker/prestart.sh | 3 ++- files/tasks.py | 10 +++++++--- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/deploy/docker/prestart.sh b/deploy/docker/prestart.sh index 49a4259..938dedb 100755 --- a/deploy/docker/prestart.sh +++ b/deploy/docker/prestart.sh @@ -7,7 +7,7 @@ if [ X"$ENABLE_MIGRATIONS" = X"yes" ]; then echo "Running migrations service" python manage.py migrate EXISTING_INSTALLATION=`echo "from users.models import User; print(User.objects.exists())" |python manage.py shell` - if [ "$EXISTING_INSTALLATION" = "True" ]; then + if [ "$EXISTING_INSTALLATION" = "True" ]; then echo "Loaddata has already run" else echo "Running loaddata and creating admin user" @@ -67,4 +67,5 @@ fi if [ X"$ENABLE_CELERY_LONG" = X"yes" ] ; then echo "Enabling celery-long task worker" cp deploy/docker/supervisord/supervisord-celery_long.conf /etc/supervisor/conf.d/supervisord-celery_long.conf + rm /var/run/mediacms/* -f # remove any stale id, so that on forced restarts of celery workers there are no stale processes that prevent new ones fi diff --git a/files/tasks.py b/files/tasks.py index aee5b67..9559fcb 100644 --- a/files/tasks.py +++ b/files/tasks.py @@ -644,7 +644,11 @@ def save_user_action(user_or_session, friendly_token=None, action="watch", extra if action == "watch": media.views += 1 - media.save(update_fields=["views"]) + Media.objects.filter(friendly_token=friendly_token).update(views=media.views) + + # update field without calling save, to avoid post_save signals being triggered + # same in other actions + elif action == "report": media.reported_times += 1 @@ -659,10 +663,10 @@ def save_user_action(user_or_session, friendly_token=None, action="watch", extra ) elif action == "like": media.likes += 1 - media.save(update_fields=["likes"]) + Media.objects.filter(friendly_token=friendly_token).update(likes=media.likes) elif action == "dislike": media.dislikes += 1 - media.save(update_fields=["dislikes"]) + Media.objects.filter(friendly_token=friendly_token).update(dislikes=media.dislikes) return True