2

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

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

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

另外,我目前没有缓存。

4

1 回答 1

9

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

  • 您是在重用现有的通用视图还是编写自己的视图?
  • 您是否正在序列化数据,如果是,您的序列化程序定义是什么样的?
  • 呈现到 JSON 时,还是仅呈现到 Browsable API 时出现问题?
  • 您提到在没有 REST 框架的情况下提供内容 - 之前的视图是什么样的,之后又是什么样的?

REST framework 视图很简单,所以使用分析工具,或者简单地覆盖它们并添加一些时间。同样,渲染器是微不足道的- 子类您目前使用的任何渲染器,覆盖.render()并在调用父方法的任一侧添加几个计时调用.render()

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

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

如果您要跨模型关系进行查找,则可能需要在构造查询集时添加.select_related().prefetch_related()调用,这与任何其他 Django 视图完全相同。


编辑:请注意,从这篇文章开始,序列化程序的速度得到了显着的改进,正如这张票中所指出的那样

于 2012-11-06T09:45:19.067 回答