【问题标题】:whitenoise with zappa, push static files to s3?使用 zappa 进行白噪声,将静态文件推送到 s3?
【发布时间】:2017-07-04 10:28:57
【问题描述】:

我正在使用 WhiteNoiseZappa

Zappa 建议尽可能缩小项目规模:

...吃掉你的应用函数的内存空间 (source)

确实,对于超过 50MB 的项目,您需要设置 slim_handler=true,这会带来轻微的性能损失。

WhiteNoise 建议将您的静态文件放在您的服务器上,例如 Amazon Cloudfront 来访问和缓存这些文件。

这里的缓存 22 是创建的压缩 WhiteNoise 静态文件的许多版本可能导致静态包 > 100MB(在我的情况下)。

我不知道如何在这里进行。选项有:

  • 手动将 WhiteNoise 的静态内容推送到 S3 存储桶并让 Cloudfront 以此为源,不要将 100MB 上传到 Amazon Lambda。
  • 看看我能否让 Zappa 将静态内容捆绑到 S3(并从应用程序本身中删除静态内容)。随着 Zappa 上传 Zip,也许这是一个更快的选择。

有什么想法吗?谢谢。

【问题讨论】:

  • 这是个好问题。部分问题是 Django 将文件的散列和非散列版本都保存在 STATIC_ROOT 中。最重要的是,您在 STATICFILES_DIRS 中拥有原始文件,因此您至少拥有三个副本以及压缩版本。我将在即将发布的 WhiteNoise 版本中研究减轻这种情况的方法。也可以通过在 Zappa 中定义 ZIP 回调来进行一些打包后清理,但我还没有研究过这个细节。

标签: python aws-lambda static-content


【解决方案1】:

根据Zappa-django-guide,我转而使用 django-storages (tutorial setting up with zappa)。

虽然我确实设法让 WhiteNoise 与 Zappa 一起工作,但我们的应用程序非常慢。 django-storages 解决方案是 zippy!

【讨论】:

  • 很高兴您找到了可行的方法。您是否在 CDN(例如 cloudfront 或 cloudflare)后面运行 WhiteNoise?这是生产设置的推荐方式,应该会给您比 S3 更好的性能。
  • 是的。通过 whiteNoise 在 Lambda 之上的 Cloudfront。我怀疑通过正确的缓存设置,Whitenoise 会很好地工作。不过我没能做到这一点(出于某种原因,Cloudfront 总是深入到 Lambda 中获取我的静态内容)。
猜你喜欢
  • 1970-01-01
  • 2017-09-09
  • 2016-06-01
  • 2021-12-30
  • 2023-02-23
  • 2021-11-27
  • 1970-01-01
  • 2021-04-02
  • 2017-05-06
相关资源
最近更新 更多