如何以编程方式访问数据(加载pickle文件)作为静态文件存储?

时间:2010-07-27 00:51:38

标签: python google-app-engine

我现在使用的解决方案如何:

我在所有.py模块的同一目录中有一个1MB的.dbf文件。在main.py我有

import tools

tool.py代码中:

the_list_that_never_changes = loadDbf(file).variables['CNTYIDFP'].

所以the_list_that_never_changes只加载一次,并且总是在内存中准备好使用......正确吗?

2 个答案:

答案 0 :(得分:2)

静态文件与应用程序文件分开存储。如果您需要从data.pkl加载main.py,请不要将其标记为静态文件,main.py可以像任何其他应用程序文件一样访问它。

参考:应用程序配置Handlers For Static Files


替代方案:为什么不将data.pkl中存储的信息定义为Python源代码中的全局变量?然后你不必经历读取文件和反序列化其腌制内容的麻烦,而且它也会更快一些。这也可以轻松利用应用程序缓存 - 您的数据将被加载一次,然后缓存以供后续请求使用。

答案 1 :(得分:0)

data.pkl放在与main.py相同的目录中,并使用以下内容:

pickle_path = os.path.join(os.path.dirname(__file__), 'data.pkl')
f = open(pickle_path)
data = pickle.load(f)

请勿将data.pkl添加到app.yaml

如果您经常阅读这些数据,那么在unpickling之后memcache它可能是有益的。然后你可以从memcache中读取它,这通常比从磁盘读取文件更快。