调试慢速Django管理视图

2024-06-01 06:22:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Django Admin中的一些视图加载时间太长。 调试Django管理视图以查看什么是消耗周期的最佳方法是什么?


Tags: django方法视图admin时间消耗
3条回答

我也在Django管理员的特定模型中看到过这一点,如果它们的表非常大(几百万条记录可以做到这一点),并且表引擎是MySQL的InnoDB。我花了一段时间才想出解决办法,让我的Django管理员再次哼唱100米以上的记录。根问题的结果是页面加载时的查询开销很大,而且每当我使用ModelAdmin中的一个查询时,搜索查询的构造也很差。

我把我所有的解决方案都记录在这里,以便有朝一日它们可以帮助一个身处困境的Django er同胞:http://craiglabenz.me/2013/06/12/how-i-made-django-admin-scale/

正如rantanplan所评论的,django debug toolbar是开始分析的最简单的方法(显示了在页面加载时执行的所有查询、它们的解释、它们的执行时间等)。您还可以在这里查看有关分析慢速django安装的问题: How to profile django application with respect to execution time?

这个问题提到了hotshot的使用,Django的Wiki在profiling django下也提到了hotshot。

如果将Django与MySQL一起使用,那么MySQL中存在一个内部连接优化的bug。如果您尝试在Admin.list_display中使用外键,Django将生成具有排序和内部连接的查询,这在MySQL中非常慢。

有两种解决方案:

  1. 使用django mysql修复后端:https://pypi.python.org/pypi/django-mysql-fix

  2. 重写AdminChangeList中的get_query_set-删除select_related并设置prefetch_related字段-更多详细信息请参见我的另一个答案:https://stackoverflow.com/a/23097385/1178806

相关问题 更多 >