Przeglądaj źródła

Feat celery run (#860)

* avoid calling post save signals
* remove stale celery ids that prevent new services from starting
Markos Gogoulos 1 rok temu
rodzic
commit
e9739bab45
2 zmienionych plików z 9 dodań i 4 usunięć
  1. 2 1
      deploy/docker/prestart.sh
  2. 7 3
      files/tasks.py

+ 2 - 1
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

+ 7 - 3
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