我开始使用Django REST框架来准备生产,但不幸的是,它的执行速度非常慢。
我正在调用一个包含500个词典的数组,每个词典各有5个键值对。在shell中,呼叫时间根本不明显 - 你按下回车键,就完成了。以前,当我在没有REST框架的情况下直接提供相同的内容时,也没有明显的延迟。但是,使用REST框架,在呈现页面以显示内容后大约需要1-2秒。
我认为这不是因为javascript因为可浏览API导致相同的细节导致类似的延迟。
此外,我现在不缓存。
答案 0 :(得分:9)
根据问题中给出的详细信息,其他任何人都无法为您调试此内容。
REST框架视图琐碎,因此使用分析工具,或者只是覆盖它们并添加一些时间。同样,渲染器琐事 - 子类您当前使用的任何渲染器,覆盖.render()
并在调用父.render()
方法的任一侧添加几个时序调用。
如果您认为自己已将某个问题缩小到特定区域,那么请将最小的测试用例放在一起并将其作为问题提交。
序列化本身不太可能是一个问题,我使用相同的序列化引擎来复制Django的夹具转储,并且没有明显的降级。
如果您在模型关系中进行查找,则可能需要在构造查询集时添加.select_related()
或.prefetch_related()
调用,就像使用任何其他Django视图一样。
修改:请注意,在此帖子后面有一些显着的序列化程序速度改进,as noted in this ticket。