2012-06-15 27 views
0

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

也就是说,客户端发出特定的请求,我的GAE服务器必须首先在此〜2MB文件中获取数据,做到用这个数据计算的一些,再服一小响应返回给客户端。

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

回答

1

如果下面的假设成立真

  • 文件是不会要求AppEngine上代码更新之外的更新
  • 该文件是只读

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

你需要时,你得到一个新的请求,你可以通过导入模块,并引用名获得文件的内容分配从文件中读取到一个模块级变量的值,这样。即。 mymodule.filecontents

+0

谢谢Tim。您能否澄清一下,我如何用我的代码部署文件,以及在启动过程中如何将它读入内存?抱歉,什么是热身请求?谢谢。 – aez

+0

好的,你知道应用程序是如何部署到appengine的。如果是这样,文件只包含在实际的代码中。 (你没有说过,如果你使用python或java,我只能使用python,所以我说的更多的东西是基于python的,只要把这个文件看作是另一段代码就可以了,你可以使用标准open(“path to文件“)。read()类型的调用将其读入内存 –

+0

有关热身请求的详细信息,请参阅https://developers.google.com/appengine/docs/adminconsole/instances#Warmup_Requests。基本上,appengine在发送流量之前,将会启动一个/ _ah/warmup命令来启动一个实例,通过使用热身请求将文件读入内存,您可以在启动时只读一次,而不会在每次请求时产生读取成本 –