1

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

网址.py


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

视图.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)

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

4

1 回答 1

2

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

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