我正在使用lib通过其IP来获取用户位置 主要代码:
...
datfile = os.path.join(os.path.dirname(__file__), "ipdb.dat")
class IPv4Database(object):
def __init__(self, filename=None, use_mmap=True):
print 'IPv4Database init'
if filename is None:
filename = datfile
with open(filename, 'rb') as f:
if use_mmap and mmap is not None:
...
我知道读取文件会花费很多,所以我希望ipdb = IPv4Database()
只调用一次,然后在整个django项目中使用ipdb
。
我首先想要的是将ipdb
设置为全局变量,但我知道的唯一方法就是将ipdb = IPv4Database()
放到settings
。在设置中启动对象是否可以?
另一种方式----缓存:
将文件保存到缓存似乎不太好,__init__
仍然需要加载此文件。
所以pickle
,pickle ipdb
并保存到缓存中,然后每次需要时都要进行unpickle。我担心文件很大是不好的。
我该怎么办?
答案 0 :(得分:0)
只需在模块中创建一个变量。
e.g。
文件appname / ipdb.py中的
ipdb = IPv4Database()
...
然后你需要它,你可以做到
from appname.ipdb import ipdb
... do something with ipdb
确保您绝对只需要一个Ip数据库的实例。