我正在构建一个简单的django应用程序,它从服务中获取数据,处理数据,存储到数据库中,并根据处理的数据提供页面。数据库中的数据是只读的,并显示在静态页面上。
从外部服务初始获取将需要几分钟来填充数据库。我目前的计划是在第一页请求中对服务进行初始长时间提取,并且请求的视图设置一个标记' fetch-in-progress'因此,进一步的请求不会开始另一个不必要的提取。
我假设django同时处理多个请求 - 我只是读了一下,它似乎依赖于wsgi配置。但我假设两个请求将同时由django处理,在我的情况下,它将导致两次提取服务,我想避免。
存放国旗的最佳地点是什么?我读过的选项:
答案 0 :(得分:0)
您应该使用持久性中央存储,因此即使您有多个具有负载均衡器的服务器,所有服务器都将访问相同的标志。如果在运行时将属性设置为类,则一个服务器将看到该标志,但如果节点平衡器将下一个请求发送到另一个服务器 - 它不会。
具体解决方案基于数据大小,更新频率,预期流量等。通常从数据库中获取单个标志的速度很快,因此您应该考虑是否值得安装和管理中央缓存。如果你使用中央缓存,基于文件的缓存很容易,那么它就变得更加复杂。也许DB会这样做? 你可以让它更快:
带有少量索引整数列的标志表,因此每个数据库页面都包含很多索引行
使用直接SQL查询数据库,只是为了获取MySQLDB的标志,并节省了django对象和模型的开销
使用与所有其他django表单独的数据库。