具有DRF的视图和uvicorn的Django 3.1异步过程通过并行过程获得即时响应

问题描述

我必须为用户开发一个端点来上传媒体文件。 事实是,此任务可能需要很长时间。 我希望在验证请求的数据后,将响应返回给客户端,而上载过程是由另一个工作程序运行的。这样,用户不必在加载屏幕上等待完成任务(要上传的文件)。

  • django 3.1
  • uvicorn
  • DRF ModelViewSets

*让我们假设以后,前端将使用轮询来获取上传状态(失败/成功)。

我想在不使用celery / redis / django-channels的情况下实现此功能,但是请在新版本的Django(3.1)上使用Async视图查看解决方案


async def long_process_of_uploading_large_file(file):
    await upload_file(file)

class UploadView(ModelViewSet):
    http_method_names = ['post','get,'options','head']
    queryset = Model.objects.all()
    
    def create(self,request,*args,**kwargs):
        data = request.data
        file = data.get('file')
        serializer = UploadSerializer(data=data)
        serializer.is_valid(raise_exception=True)
        long_process_of_uploading_large_file(file)
        return Response(serializer.data,status=HTTP_200_OK) << returns the new obj id mainly.

感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...