我有一个django休息应用程序,其中有一个函数,使用一些外部数据(来自另一个服务)计算一些东西我想避免加载,如果不需要。此数据会定期更改,但对于一个请求则相同。因此,我想缓存此函数的结果(因为它在一次请求期间被多次调用),持续一个请求的持续时间。我遇到了缓存函数结果的https://github.com/tvavrys/django-memoize/库,但是我只能指定一个时间而不是一个上下文,之后缓存应该被无效。
我发现合理的一种可能性是以某种方式注册一个钩子,它在每个请求之后清除缓存(使用delete_memoized
),但我还没有找到一个方法来注册这样的钩子。
因此,我的问题是:是否有可能
也许你应该试试cached_property
@cached_property装饰器使用单个self参数作为属性来缓存方法的结果。只要实例执行,缓存的结果将保持不变,因此如果传递实例并随后调用该函数,则将返回缓存的结果。