【问题标题】:File uploads in Heroku deployment with Django使用 Django 在 Heroku 部署中上传文件
【发布时间】:2017-09-11 08:56:38
【问题描述】:

所以我终于能够设置我正在处理的本地 + 产品测试项目。

# wsgi.py 
from dj_static import Cling, MediaCling

application = Cling(MediaCling(get_wsgi_application()))
application = DjangoWhiteNoise(application)

我使用 whitenoise(没有任何问题)和媒体(文件上传)设置静态文件,使用 dj_static 和 Postgres for local + prod。一开始一切正常...静态文件,文件上传。

但是在 Heroku dynos 重新启动后,我丢失了所有上传的文件。我的问题是,---因为我是从 Django 应用程序而不是像 S3 这样的东西提供媒体文件,所以测功机重启是否也会消除所有这些?

PS:我知道我可以使用 AWS 等来做到这一点,但我只想知道这是否是我丢失所有上传的原因。

【问题讨论】:

    标签: django heroku django-deployment


    【解决方案1】:

    由于我从 Django 应用程序而不是 S3 之类的应用程序提供媒体文件,因此重新启动测功机是否也会消除所有这些?

    是的!这是正确的。根据Heroku docs

    每个 dyno 都有自己的临时文件系统,以及最近部署的代码的新副本。

    另见this 答案和this 答案。

    结论:对于媒体文件(上传的),您必须使用一些外部服务(如 S3 或其他东西)。 whitenoise 仅用于静态文件。请参阅 here 为什么 whitenoise 不适合为用户上传的(媒体)文件提供服务。

    【讨论】:

    • 太好了,我想确定这一切。谢谢!
    猜你喜欢
    • 2017-06-24
    • 1970-01-01
    • 2014-06-08
    • 2019-10-31
    • 1970-01-01
    • 2014-09-12
    • 2013-07-05
    • 2013-07-16
    • 2016-04-16
    相关资源
    最近更新 更多