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