如果您可以将它们嵌入到源代码中,可以这样做,但是如果需要它是可动态配置的,那么数据存储是您的最佳选择。您可以通过将它们缓存在本地内存中来避免获取每个请求的设置。这是一个帮助类:
class Configuration(db.Model):
_INSTANCE = None
@classmethod
def get_instance(cls):
if not cls._INSTANCE:
cls._INSTANCE = cls.get_or_insert('config')
return cls._INSTANCE
只需使用所需的任何配置值对此子类化(或修改类本身)。由于加载的代码在请求之间仍然存在,因此每个应用程序实例只需执行一次访存- 尽管如果您希望能够动态更新配置,则可能需要建立超时。
如果要在有限的时间内缓存内容,最好的选择就是在获取时间戳时简单地存储它:
class Configuration(db.Model):
CACHE_TIME = datetime.timedelta(minutes=5)
_INSTANCE = None
_INSTANCE_AGE = None
@classmethod
def get_instance(cls):
Now = datetime.datetime.Now()
if not cls._INSTANCE or cls._INSTANCE_AGE + cls.CACHE_TIME < Now:
cls._INSTANCE = cls.get_or_insert('config')
cls._INSTANCE_AGE = Now
return cls._INSTANCE