Django REST框架很慢

时间:2012-11-06 03:08:16

标签: django rest django-rest-framework

我开始使用Django REST框架来准备生产,但不幸的是,它的执行速度非常慢。

我正在调用一个包含500个词典的数组,每个词典各有5个键值对。在shell中,呼叫时间根本不明显 - 你按下回车键,就完成了。以前,当我在没有REST框架的情况下直接提供相同的内容时,也没有明显的延迟。但是,使用REST框架,在呈现页面以显示内容后大约需要1-2秒。

我认为这不是因为javascript因为可浏览API导致相同的细节导致类似的延迟。

此外,我现在缓存。

1 个答案:

答案 0 :(得分:9)

根据问题中给出的详细信息,其他任何人都无法为您调试此内容。

  • 您是在重用现有的通用视图还是编写自己的视图?
  • 您是否在序列化数据,如果是这样,您的序列化程序定义是什么样的?
  • 在渲染到JSON时,或者只是在渲染到Browsable API时,问题是否显示?
  • 你提到在没有REST框架的情况下提供内容 - 以前的观点是什么样的,以及它们之后的样子是什么?

REST框架视图琐碎,因此使用分析工具,或者只是覆盖它们并添加一些时间。同样,渲染器琐事 - 子类您当前使用的任何渲染器,覆盖.render()并在调用父.render()方法的任一侧添加几个时序调用。

如果您认为自己已将某个问题缩小到特定区域,那么请将最小的测试用例放在一起并将其作为问题提交。

序列化本身不太可能是一个问题,我使用相同的序列化引擎来复制Django的夹具转储,并且没有明显的降级。

如果您在模型关系中进行查找,则可能需要在构造查询集时添加.select_related().prefetch_related()调用,就像使用任何其他Django视图一样。


修改:请注意,在此帖子后面有一些显着的序列化程序速度改进,as noted in this ticket