django - 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,所以没有查询。一切都加载到内存中并从那里执行。
这可能是什么原因造成的,我该如何诊断?
解决方案
用户错误。我在 logging.DEBUG 而不是 logging.ERROR 下运行 DRF 案例。
推荐阅读
- c - 通过 uart (esp-idf) 的 esp32 printf 通道
- node.js - 如何在nodejs中抓取freeswitch的所有事件
- python - Pyinstaller 找不到加密。(即使在隐藏导入中)
- codeigniter - 调用未定义的方法 Vendormodel::read()
- powershell - 连字符/破折号参数对 PowerShell 意味着什么?
- android - 如何在第一个活动的意图后刷新第二个活动
- gitlab - 可以使用分支特定变量重用 gitlab CI 脚本吗?
- python - 检查一个excel文件中的文本字符串是否包含在另一个excel文件中
- r - 计算所有可能的交叉点
- php - 单击提交按钮后弹出成功消息