首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django Daphne大文件上传

Django Daphne大文件上传
EN

Stack Overflow用户
提问于 2018-10-30 01:55:28
回答 1查看 655关注 0票数 1

我有一个Django web应用程序,它使用Channels和Daphne进行websocket通信。我所有的websocket东西都工作正常,没有任何问题。

我的麻烦来自于我的服务器也允许我将文件上传到服务器。小文件(甚至高达282mb)正在上传,并且工作正常,没有任何问题。

但是,大文件会导致500 Internal error - Daphne,并显示此堆栈跟踪:

代码语言:javascript
复制
2018-10-29 12:40:14,009 - ERROR - http_protocol - Traceback (most recent call last):
  File "..\venv\lib\site-packages\daphne\http_protocol.py", line 176, in process
    "body": self.content.read(),
MemoryError

我猜这告诉我达芙妮的内存快用完了。我在这里找到了引用:Daphne Django file upload size limitations,它也有助于确认这一发现。

我需要的答案是如何解决它。我没有在Docker内部运行我的项目,我在Linux VM实例上运行。如果我增加整个VM上使用的总RAM,daphne还能获取更多内存吗?

有没有什么方法可以让daphne使用比当前内存更多的内存?这个服务器实例有4 4gb的RAM,而我的文件只有675mb,所以除非它同时在内存中存储多个副本,否则它应该有足够的容量来容纳这个文件。

如何使Daphne能够成功接受大文件上传?

EN

回答 1

Stack Overflow用户

发布于 2019-03-19 18:58:16

我发布了答案here

Daphne冗余且过早地将整个HTTP POST请求正文加载到RAM中。如果你需要上传足够大的文件,你需要使用uvicorn代替daphne。

uvicorn --port <your-port> --host <your-host> ...替换daphne -p <your-port> -b <your-host> ...

在此之后,您必须编写自己的AsyncHttpConsumer,因为channeles中的AsgiHandlerAsgiRequest也不支持分块正文。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53051240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档