Muhammad Nabeel
Muhammad Nabeel

Reputation: 109

How to run two requests parallel in django rest

I have two requests, which are called from react front end, one request is running in a loop which is returning image per request, now the other request is registering a user, both are working perfect, but when the images request is running in a loop, at the same time I register user from other tab,but that request status shows pending, if I stops the images request then user registered,How can I run them parallel at the same time.

urls.py


  url(r'^create_user/$', views.CreateUser.as_view(), name='CreateAbout'),
   url(r'^process_image/$', views.AcceptImages.as_view(), name='AcceptImage'),

Views.py

class CreateUser(APIView):

    def get(self,request):
        return Response([UserSerializer(dat).data for dat in User.objects.all()])

    def post(self,request):
        payload=request.data
        serializer = UserSerializer(data=payload)

        if serializer.is_valid():
            instance = serializer.save()
            instance.set_password(instance.password)
            instance.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

class AcceptImages(APIView):

    def post(self,request):
        global video

        stat, img = video.read()
        frame = img
        retval, buffer_img = cv2.imencode('.jpg', frame)
        resdata = base64.b64encode(buffer_img)

        return Response(resdata)

These endpoints I am calling from react,the second endpoint is being calling in a loop and the same time from other tab I register user but it shows status pending and If I stop the image endpoint it then register the user,how can I make these two request run parallel. I have researched a lot but can't find appropriate solution, there is one solution I using celery, but did not whether it solves my problem if it solves how can I implement above scenerio

Upvotes: 1

Views: 1778

Answers (1)

youngminz
youngminz

Reputation: 1444

You should first determine whether the bottleneck is the frontend or the backend.

  • frontend: Chrome can make up to 6 requests for the same domain at a time. (Up to HTTP/1.1)
  • backend: If you use python manage.py runserver, consider using gunicorn or uWSGI. As the Django documentation says, the manage.py command should not be used in production. Modify the process and thread count settings in the gunicorn or uWSGI to 2 or higher and try again.

Upvotes: 2

Related Questions