跟踪对象在Django中接收的视图数量

时间:2011-01-23 12:04:39

标签: django django-models performance

出于统计目的,我需要记录每次在Django中查看模型的某个实例时的日志。我首先创建了一个单独的模型Stats,它包含一个ManyToMany字段到另一个模型,用于存储访问的日期和时间。每次在视图中访问对象时,我都会更新关联的Stats对象。

这种方法存在两个问题(如果不是更多):

  1. 违反了不在GET请求上写入任何数据的原则。
  2. 更重要的是,真的慢,特别是因为可以同时查看多个对象。这会导致页面加载时出现明显的延迟。
  3. 所以我的问题是,有更好的方法吗?如果没有,有哪些技术可以加快速度,例如延迟写入数据库?我从来没有在Django中使用过那种东西,所以任何建议都会受到赞赏。

2 个答案:

答案 0 :(得分:2)

是的,似乎Celery似乎是一个不错的选择。

答案 1 :(得分:1)

不要担心(1)。维基百科说:

  

安全方法一些方法(for   例如,HEAD,GET,OPTIONS和TRACE)   被定义为安全,这意味着他们   仅供参考   检索,不应该改变   服务器的状态。换一种说法,   他们不应该有副作用,   超越相对无害的影响   例如日志记录,缓存,服务   横幅广告或   递增网络计数器。制造   不考虑任意GET请求   到应用程序的上下文   因此应该考虑国家   安全

我会说保持一定数量的观点被视为“大多无害”。