【问题标题】:Read a file and Store it on App Engine with Python 2.7使用 Python 2.7 读取文件并将其存储在 App Engine 上
【发布时间】:2012-08-08 05:57:05
【问题描述】:

我需要在 Google App Engine (Python 2.7) 上读取一个 5Mb 的文件并经常使用它。

因为在 GAE 中读取文件并不难:Read a file on App Engine with Python?

困难的部分是将它存储在某个地方,以便我可以尽快经常访问它。它是 5MB,因此超过了 1MB 数据存储项限制。

我考虑使用 Blobstore,但我担心它不够快。读取 Blobstore 是否比读取文件更快?

我正在考虑将整个文件放入内存缓存中。可能吗?内存缓存是否足以存储 5MB 的文件?

就像在电脑上一样,我需要将此文件放在内存而不是硬盘中。

有什么建议吗?

非常感谢!

【问题讨论】:

  • 也许您可以将数据作为base64编码字符串存储在python文件中并在init中解码
  • @Pramod 好主意!正如这个答案所说:stackoverflow.com/questions/1462208/…一个文件可以大到10MB,因此可以将所有数据存储在.py代码文件中。但是为什么是base64?每次我使用数据时都需要“解码”吗?没有“解码”会更快。
  • Memcache 对缓存值设置了 1MB 的限制 (see here)。有没有办法把它分成更小的块?

标签: python google-app-engine memcached


【解决方案1】:

如果您的文件没有更改,那么您可以简单地将其放在您的项目目录中,并将其用作static file

现在开始提问:

  1. Blobstore 将足够快,因为 GAE 上的所有请求(blobstore 或用户代码)都通过transparent cache。您只需在 blobstore 响应上设置适当的 Cache-control 标头即可将其缓存。

  2. 内存缓存max stored value is 1Mb。此外,memcache 中的数据可以随时消失,因此无论如何您都需要将数据存储在永久存储中。另外,我怀疑它会更快,因为你的前端实例必须从 Memcache 获取数据然后提供它,而 Blobstore 服务的工作方式有点不同(通过拦截响应和在正文中插入数据)。

  3. 恕我直言,最快的方法是通过透明缓存提供数据。

另外,如果您想提供图像,那么您可能需要使用图像服务,因为它似乎是faster then Blobstore

【讨论】:

    猜你喜欢
    • 2011-02-07
    • 2016-01-24
    • 1970-01-01
    • 2012-05-30
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    • 2018-04-29
    • 1970-01-01
    相关资源
    最近更新 更多