如何在 django rest 中并行运行两个请求

How to run two requests parallel in django rest

提问人:Muhammad Nabeel 提问时间:11/19/2019 更新时间:11/19/2019 访问量:1678

问:

我有两个请求,它们是从 react 前端调用的,一个请求在一个循环中运行,每个请求返回图像,现在另一个请求正在注册一个用户,两者都运行良好,但是当图像请求在循环中运行时,同时我从其他选项卡注册用户,但是该请求状态显示待处理,如果我停止图像请求然后用户注册,我该如何同时并行运行它们。

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)

我从 react 调用的这些端点,第二个端点正在循环中调用,同时从其他选项卡调用我注册用户,但它显示状态待处理,如果我停止图像端点,然后注册用户,我怎样才能使这两个请求并行运行。 我研究了很多,但找不到合适的解决方案,我使用芹菜有一个解决方案,但没有解决它是否能解决我的问题,如果它解决了我该如何实现上述场景

django django-request

评论


答:

2赞 youngminz 11/19/2019 #1

您应该首先确定瓶颈是前端还是后端。

  • 前端:Chrome 一次最多可以对同一域名发出 6 个请求。(最高 HTTP/1.1)
  • backend:如果你使用 ,可以考虑使用 gunicorn 或 uWSGI。正如 Django 文档所说,manage.py 命令不应该在生产中使用。将gunicorn或uWSGI中的进程和线程数设置修改为2或更高,然后重试。python manage.py runserver