From 61d374ee77b5a607976f31a27cebc2293d0e4513 Mon Sep 17 00:00:00 2001 From: "robinwilliam.hundt" <robinwilliam.hundt@stud.uni-goettingen.de> Date: Sun, 3 Mar 2019 16:12:19 +0100 Subject: [PATCH] Changed no of gunicorn workers to 5 and type to sync Using multiprocessing.Lock to synchronize access to creation of Assignment fixes #130 --- core/views/subscription.py | 14 +++++++++----- deploy.sh | 4 ++-- requirements.txt | 1 - 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/core/views/subscription.py b/core/views/subscription.py index 266bd647..bf77f467 100644 --- a/core/views/subscription.py +++ b/core/views/subscription.py @@ -10,6 +10,8 @@ from core.models import TutorSubmissionAssignment from core.permissions import IsReviewer, IsTutorOrReviewer from core.serializers import AssignmentDetailSerializer, AssignmentSerializer +from multiprocessing import Lock + log = logging.getLogger(__name__) @@ -123,11 +125,13 @@ class AssignmentApiViewSet( @permission_classes((IsTutorOrReviewer,)) def create(self, request, *args, **kwargs): - context = self.get_serializer_context() - serializer = AssignmentDetailSerializer(data=request.data, - context=context) - serializer.is_valid(raise_exception=True) - return self._fetch_assignment(serializer) + with Lock(): + context = self.get_serializer_context() + serializer = AssignmentDetailSerializer(data=request.data, + context=context) + serializer.is_valid(raise_exception=True) + assignment = self._fetch_assignment(serializer) + return assignment @permission_classes((IsTutorOrReviewer,)) def retrieve(self, request, *args, **kwargs): diff --git a/deploy.sh b/deploy.sh index fd384da7..57022449 100755 --- a/deploy.sh +++ b/deploy.sh @@ -3,7 +3,7 @@ sleep 1 python manage.py migrate --noinput gunicorn \ --bind 0.0.0.0:8000 \ - --workers=2 \ - --worker-class=gevent \ + --workers=5 \ + --worker-class=sync \ --log-level debug \ grady.wsgi:application diff --git a/requirements.txt b/requirements.txt index db9655c0..5f8f6778 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,6 @@ djangorestframework~=3.8 git+https://github.com/robinhundt/djangorestframework-camel-case Django~=2.1 drf-yasg~=1.12.0 -gevent~=1.3.0 gunicorn~=19.9.0 psycopg2-binary~=2.7.0 python-json-logger~=0.1.0 -- GitLab