用于网络分析屏幕的Django设计模式需要很长时间才能计算出来

时间:2011-07-31 02:05:50

标签: python django batch-file

我的django Web应用程序用户可以看到“分析仪表板”屏幕,需要很长时间才能计算出来。它是这些屏幕中的一个,它为用户遍历数据库中的每个事务,并为其提供指标。

我希望这是一个实时操作,但活跃用户的计算时间可能是20-30秒(不允许分页,它给出了事务的平均值。)

我想到的解决方案是通过manage.py批处理命令在后端计算,然后只向用户显示缓存值。是否有Django设计模式来帮助促进这些类型的模型/显示?

4 个答案:

答案 0 :(得分:14)

答案 1 :(得分:3)

此类场景的最简单和IMO正确的解决方案是在事物更新时预先计算所有内容,以便当用户看到仪表板时,您只计算已计算的值,而只计算显示已计算的值。

可以有多种方法可以做到这一点,但通用概念是在计算所依赖的变化时,在后台触发计算函数。

为了在后台触发此类计算,我通常使用celery,因此假设用户在视图foo中添加了一个项目view_foo,我们称之为芹菜任务update_foo_count在后台运行并将更新foo计数,或者你可以有一个芹菜计时器,它将通过检查是否需要重新计算每10分钟更新计数,重新计算标志可以设置在用户更新数据的各个地方。

答案 2 :(得分:1)

您需要查看Django’s cache framework

答案 3 :(得分:0)

如果计算速度慢的数据可以在添加数据时进行非规范化和存储,而不是在查看数据时存储,那么您可能会对django-denorm感兴趣。