【问题标题】:Google AppEngine static file for server computations用于服务器计算的 Google AppEngine 静态文件
【发布时间】:2012-06-15 09:45:16
【问题描述】:

我有一个大约 2MB 的文件,我的 Google AppEngine 服务器必须使用(不提供)作为服务请求计算的一部分。

也就是说,一个客户端发出一个特定的请求,我的 GAE 服务器必须首先从这个大约 2MB 的文件中获取数据,使用这些数据进行一些计算,然后将一个小的响应返回给客户端。

我最好将这些数据存储在哪里,以便服务器可以在计算中快速读取和使用它?

【问题讨论】:

    标签: google-app-engine google-cloud-datastore


    【解决方案1】:

    如果以下假设成立

    • 该文件不需要在 appengine 代码更新之外进行更新
    • 该文件是只读的

    然后使用您的代码部署文件并在启动期间将文件读入内存(理想情况下使用预热请求)并从内存中对其进行操作。如果您的代码必须具有基于文件的语义来访问数据(读取、查找等),则读取文件内容并将其包装在 StringIO 中。

    您需要将从文件读取的值分配给模块级变量,这样每当您收到新请求时,您都可以通过导入模块并引用名称来获取文件内容。 IE。 mymodule.filecontents

    【讨论】:

    • 谢谢蒂姆。您能否澄清一下,如何使用我的代码部署文件以及如何在启动期间将其读入内存?抱歉,什么是预热请求?谢谢。
    • 好的,您了解应用程序是如何部署到 appengine 的吗?如果是这样,则该文件仅包含在实际代码中。 (您还没有说您使用的是python还是java。我只使用python,所以我说的任何内容都将基于python。只需将文件视为另一段代码。您可以使用标准的open(“路径到file").read() 类型调用将其读入内存。
    • 您可以查看developers.google.com/appengine/docs/adminconsole/… 了解有关热身请求的详细信息。基本上,appengine 会在向实例发送流量之前向 /_ah/warmup 发起请求以启动实例。通过使用预热请求将文件读入内存,您只需在启动时读取一次,而不会在每次请求时产生读取成本。
    • 谢谢蒂姆。是的,我已经部署了一些测试应用程序,但我不知道 在哪里 放置这个文件(然后它的路径是什么),我想知道你所说的“启动”是什么意思" 因为此文件仅供服务器使用。但是启动/预热听起来很有趣,因为我担心必须为每个客户端请求读取这个大文件。 (编辑——关于“热身”的重要信息,您的评论帖子是在我输入此评论之前发布的)
    • 你在使用 python 吗?如果是这样,请查看有关确定 appengine 中的文件路径的这个 stackoverflow 问题。 stackoverflow.com/questions/61894/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    • 2013-12-08
    • 2020-05-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-16
    相关资源
    最近更新 更多