Django REST框架很慢

sna*_*ies 2 django rest django-rest-framework

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

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

我不认为这是由于javascript因为通过可浏览的API导致相同的细节导致类似的延迟.

此外,我现在还没有缓存.

Tom*_*tie 9

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

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

REST框架视图很简单,因此使用分析工具,或者只是覆盖它们并添加一些时间.同样,渲染器是微不足道的 - 将您当前正在使用的任何渲染器子类化,覆盖.render()并添加几个调用父.render()方法的时间调用.

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

序列化本身是不太可能是一个问题,我已经使用了相同的序列化引擎复制Django的夹具倾销和没有显著下降.

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


编辑:请注意,从这篇文章开始,有一些显着的序列化器速度改进,如此票据中所述.