如何将文件直接从 Django admin 上传到 Amazon S3?缓解 Heroku 应用程序错误(超时)
Posted
技术标签:
【中文标题】如何将文件直接从 Django admin 上传到 Amazon S3?缓解 Heroku 应用程序错误(超时)【英文标题】:How to upload files directly from Django admin to Amazon S3? Mitigating Heroku Application Error (timeout) 【发布时间】:2013-07-02 12:52:33 【问题描述】:我在 Heroku 上有一个应用程序(免费计划),并且在从 Django 管理员上传的媒体文件时经常收到 应用程序错误。我使用 S3 提供静态和媒体服务。 通过 django admin 直接将文件上传到 S3 的最佳方法是什么?或者也许有其他方法可以缓解这个问题(不添加测功机)?
【问题讨论】:
【参考方案1】:尝试以下方法之一:
-
s3 direct.:
使用 s3 direct,文件将直接上传到 s3。
增加服务器超时
您可以增加服务器超时 --- 猜测您正在使用 Gunicorn 。
请注意,这可能会产生影响,不幸的是我不完全知道repercussions 是什么类型的
【讨论】:
【参考方案2】:您可以为此使用django-storages
【讨论】:
这有什么帮助?如果通过管理员上传文件的时间超过 30 秒,则会出现此问题。然后我们遇到了heroku超时。【参考方案3】:@acquayefrank 的建议对我有用。我有一个 Django 项目,但在通过 Django Admin 上传大约 120 MB 以上的文件时遇到了问题。
我将我的 Procfile 更改为这样说(将 yourname
替换为 .wsgi 的虚线路径):
web: gunicorn --timeout 120 yourname.wsgi --log-file -
我不能肯定这会解决每个人的相同问题,但可能值得一试。
【讨论】:
【参考方案4】:This 文章概述了如何在 javascript 的帮助下直接上传到 S3。然后,您可能会使用custom Javascript in the Django admin 来实现相同的结果。希望对您有所帮助。
【讨论】:
以上是关于如何将文件直接从 Django admin 上传到 Amazon S3?缓解 Heroku 应用程序错误(超时)的主要内容,如果未能解决你的问题,请参考以下文章
如何从 django admin 中的单个“选择文件”选择器上传多个图像
将 BinaryField 的文件上传小部件添加到 Django Admin
当我从数据库/模型中删除对象时,如何让 Django Admin 删除文件?