【发布时间】:2010-12-16 21:47:57
【问题描述】:
我正在尝试将 30 秒的用户 mp3 录音作为 Blob 存储在我的应用引擎数据存储中。但是,为了启用此功能(App Engine 每次上传有 1MB 的限制)并降低成本,我想在上传之前压缩文件并在每次请求文件时解压缩文件。你会建议我如何完成这个(它可以通过任务队列在后台发生,但一个有效的解决方案总是好的)
根据我自己的测试和研究 - 我看到了两种可能的方法来实现这一点
- Zlib
为此,我需要使用 While 循环一次压缩一定数量的块。但是,App Engine 不允许您写入文件系统。我考虑过使用临时文件来完成此操作,但在尝试从临时文件中解压缩内容时,我没有运气
- 压缩包
从网上的阅读来看,应用引擎 url 获取功能似乎已经请求了 gzip 压缩的内容,然后将其解压缩。有没有办法阻止函数解压缩内容,以便我可以将其以 gzip 格式放入数据存储区,然后在需要按需播放给用户时解压缩?
让我知道您将如何建议使用 zlib 或 gzip 或其他解决方案来完成此操作。谢谢
【问题讨论】:
-
Aneto 如果你尝试压缩 MP3 它将无法工作,MP3 已经被压缩,所以比率约为 1。
-
为什么要在 AppEngine 中存储那种文件?为什么不使用 S3 并且只有指向存储在 AppEngine 上的文件的指针?
-
上传到 App Engine 的限制是 10MB,而不是 1 - 但数据存储区实体仍然需要不超过 1MB。
标签: python google-app-engine compression gzip zlib