首页 > 解决方案 > Django 执行 python 代码慢(无 ORM)

问题描述

当在 API 与独立环境下运行时,我看到简单 python 代码的 DRF 性能大幅下降。

例如,这里是独立运行python代码时的基准(即在Django之外。只是python中的一个普通的旧脚本)。我正在加载用户文件,将其转换为自定义对象并对其运行一些验证。所有这些都是在没有 Django 依赖项或任何 ORM 的常规 python 代码中完成的。

xlsname = 'user_file.xlsx'
dash = Dashboard(xlsname,logging.ERROR,create_copy=True)  #loading user file
Load time: 1.828125

dash.validate() #validate user file
Validation time: 0.203125

现在在简单的 DRF 函数视图下运行相同的代码时:

#views.py

@api_view(['GET'])
def load_and_validate(request):
    xlsname = 'user_file.xlsx'
    dash = Dashboard(xlsname, logging.DEBUG, create_copy=True)
    dash.validate()
    return Response({"message": "{} loaded".format(xlsname)})

我的回复时间是:

Load time: 1.96875 #this is in line with standalone execution
**Validation time: 5.21875 # this is 2500x slower than standalone!**

我的文件的验证时间现在比独立的慢 2500 倍!

我什至还没有使用任何 ORM,所以没有查询。一切都加载到内存中并从那里执行。

这可能是什么原因造成的,我该如何诊断?

标签: djangodjango-rest-framework

解决方案


用户错误。我在 logging.DEBUG 而不是 logging.ERROR 下运行 DRF 案例。


推荐阅读