首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >django中基于模型的缓存而不是基于视图的缓存

django中基于模型的缓存而不是基于视图的缓存
EN

Stack Overflow用户
提问于 2019-09-22 09:31:52
回答 1查看 38关注 0票数 0

我正在处理django应用程序。申请的主要任务是提出建议,例如:“我今天应该出去吗?”只有一个端点可以得到建议,例如example.com/。

提供这一建议的主要逻辑是:

  1. 今天用户有什么挂起的任务吗?(从UserTaskModel)
  2. Is查询今天的天气舒服吗?(计算天气预报)

如果两个用户试图在同一日期获取数据,那么UserTask查询将是不同的。但是天气预报查询任务将是相同的。如果我使用基于视图的django缓存,那么将为每个用户执行天气预报查询。但是,我希望在同一日期缓存所有用户的天气查询数据。它可以通过为天气创建不同的视图来查看实现。但是我不想用另一个端点来描述天气。

Django缓存集-get方法可用于此任务。但是,这种方式是完成这类任务的最佳方式吗?在我的示例中,我根据日期使用了一个简单的天气计算查询。但是,这种技术对复杂查询有好处吗?

EN

回答 1

Stack Overflow用户

发布于 2019-09-22 14:19:01

正如您所说,缓存集-获取是您的解决方案。但请注意这两件事:

假设您希望缓存每天的天气,设置过期时间+24小时(缓存不会很快过期) weather_2019_09_22

  • 也应该类似于

我认为创建一个实用程序类是非常好的(类似于此,这是一个伪代码)。

代码语言:javascript
运行
复制
class WeatherCache:
    def get(self):
        date = today()
        if forecast for date in cache:
            return forecast
        get forecast for date
        insert forecast into cache
        return forecast

另一个想法可以是简单地创建一个模型,并将预测放在那里,好的一点是你将保持预测的历史。也许它对以后的查询是有用的(而且这个表不会变得太大,所以您不需要担心它)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58047916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档