django 在我的机器上很慢
Posted
技术标签:
【中文标题】django 在我的机器上很慢【英文标题】:django is very slow on my machine 【发布时间】:2010-09-26 15:25:29 【问题描述】:我有一个全新安装的 django 1.0,从它提供的一个简单页面需要 5 秒才能加载。在我同事的电脑上几乎不需要时间。
我使用
启动服务器 python manage.py 测试服务器我可以看到每个 GET 请求(PNG 和样式表)大约需要半秒。
我认为与之相关的另一件奇怪的事情是,应用程序的功能测试在我使用 mysql 的机器上运行得慢得多(比我同事的机器上慢 100 倍)。当我将应用程序设置为使用 sqlite 时,它们运行得非常快。我要感叹的是,sqlite 并没有太大改变加载页面所需的时间,但它确实加快了服务器启动速度。
看起来像 IO 问题,但我的机器上没有看到一般性能问题,至少除了 django。
Django 运行在 python2.4 上,我运行的是 Vista。我也检查了python2.5。
谢谢 ΤZΩΤZΙΟΥ,这肯定是一个 DNS 问题,因为页面加载速度很快 我去http://127.0.0.1:8000/app,而不是http://localhost:8000/app。
但它可能是由什么引起的?我的主机文件只有两个条目:
127.0.0.1 本地主机 ::1 本地主机【问题讨论】:
这是第一次请求页面还是每次?还有,你用runserver的时候是一样的吗? 这是我一生中遇到的最愚蠢的错误!我的主机文件是空的,因为在 Windows 7 中这两行被处理 in the dns server itself。和同样的症状!添加“127.0.0.1 localhost”行可以解决它。谢谢,伙计! 你可以做'无效现金|重新启动你的 PyCharm 【参考方案1】:对我来说,它是 Django 调试工具栏——它在需要时非常有用,但在不需要时它会减慢开发速度,这可能会非常令人沮丧且难以识别。我发现在开发过程中禁用它会更好,除非你需要它。 :zombies-never-die:
【讨论】:
您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。【参考方案2】:我这样解决了这个问题:
转到setting.py
并设置
DEBUG = False
【讨论】:
【参考方案3】:静态文件加载缓慢
如果您注意到静态和媒体文件(图像、样式表等)的加载速度特别慢,则问题可能出在 Django 的开发服务器 (python manage.py runserver
) 上。正如hassen 所述,该服务器未针对速度进行优化。
您可以尝试使用带有--threaded
选项的django-extensions runserver_plus
命令来替代Django 的runserver
命令。在底层,它使用 Werkzeug 作为线程化的 WSGI 服务器。您可能会注意到静态文件的加载时间显着改善。
另见:Making Django development server faster at serving static media
【讨论】:
【参考方案4】:这些帖子都没有帮助我。在我的具体情况下,Justin Carmony 给了我答案。
问题
为了便于开发,我在 /etc/hosts 文件中将 [hostname].local 映射到 127.0.0.1,并且 dns 请求需要 5 秒才能解决。有时他们会很快解决,有时他们不会。
解决方案
Apple 正在使用 .local 在较新的 Snow Leopard 构建(我想我在更新到 10.6.8 后开始注意到它)和 Mac OS X Lion 上做一些 bonjour 魔法。如果您将开发主机名更改为以 local 开头而不是以 local 结尾,则您应该一切就绪。此外,除了本地之外,您几乎可以使用任何 TLD,并且它可以正常工作。
示例
test.local 可以变成:
local.test.com test.dev test.[除本地以外的任何内容]您的主机文件条目将显示为:
local.test.com 127.0.0.1
注意:此解决方案的另一个好处是成为 [hostname].com 的子域,这样可以更轻松地为 Facebook API 等指定应用程序域名。
更新 /etc/hosts 后,可能还想在终端中运行 dscacheutil -flushcache
以获得良好的效果
【讨论】:
这也为我解决了,我是 Windows 用户 :-) 谢谢!【参考方案5】:升级到 Django 1.3 或更新版本。
如果您在 2012 年仍然遇到此问题(使用 Chrome),请确保您正在升级。在 1.3 中,当开发服务器是单线程时,bug 已修复与缓慢相关的问题。
升级解决了我的问题。我正在运行 Django 1.2,因为这是 Debian Squeeze 的默认设置。
【讨论】:
【参考方案6】:我遇到了同样的问题。
解决方案是:
我试图在本地启动一个通常部署在生产环境中的网络服务器上的版本。 生产中的静态文件由 apache 配置提供,而不是由 django static serve 提供所以我只是取消了我的静态服务网址的注释:/
【讨论】:
【参考方案7】:我有同样的问题,但它是由 mysqld 引起的。
该应用程序在生产环境中使用 wsgi 和 mysql 服务器在同一主机上运行得非常快,但在使用 django runserver 选项和远程 mysql 服务器的开发环境中运行缓慢。
我注意到使用“显示进程列表”时,数据库中的连接在用户“未经身份验证的用户”的情况下停留在“登录”状态,这让我注意到身份验证过程中的问题。
寻找真正的问题,我终于注意到mysqld试图获取我的ip的dns名称并禁用名称dns解析,我解决了这个问题。
为此,您可以将此行添加到 my.cnf 文件中:
跳过名称解析
【讨论】:
【参考方案8】:要完全绕过 localhost 而无需更改主机文件或 Firefox 中的任何设置,您可以安装插件 Redirector 并制定从 localhost 重定向到 127.0.0.1 的规则。使用这些设置
Include pattern : http://localhost*
Redirect to : http://127.0.0.1$1
将其他字段留空。
【讨论】:
【参考方案9】:也有同样的问题,我在 Vista 和 Windows 7 机器上使用 Firefox 时发现了这个问题。访问开发服务器 127.0.0.1:8000 即可解决问题。
【讨论】:
【参考方案10】:我过去也遇到过同样的问题。可以通过从主机文件中删除以下行来解决。
::1 localhost
一旦消失,您应该能够再次快速使用 localhost。
【讨论】:
【参考方案11】:Firefox 在某些 Windows 机器上浏览 localhost 时出现问题。您可以通过关闭 ipv6 来解决它,这并不是真正推荐的。直接使用 127.0.0.1 是另一种解决问题的方法。
【讨论】:
Windows 7下Chrome下同样的问题及解决方法 在 OS X 中的 Chrome 中出现同样的问题和解决方案。我听说这是因为操作系统选择 IPv6 或 IPv4 先尝试,它必须等到第一个请求失败后才会尝试另一个版本。【参考方案12】:如果所有其他方法都失败了,您可以随时 cProfile 您的应用程序并查看瓶颈到底在哪里。
【讨论】:
【参考方案13】:由于您报告您朋友的计算机没有延迟,并且我假设您和他的计算机是可比的,这可能是与 DNS 相关的问题。尝试将客户端和服务器的 IP 地址都添加到服务器的 hosts 文件中。
如果你在 *nix 上运行 Django,它是 /etc/hosts
文件。如果在 MS Windows 上运行它,它是 %WINDIR%\SYSTEM32\DRIVERS\ETC\HOSTS
文件。 (它们是文本文件,可以通过您喜欢的文本编辑器进行编辑。)
【讨论】:
5 秒延迟对我来说总是听起来像是名称解析问题。【参考方案14】:我认为它是开发服务器,它没有针对速度和安全性进行优化。我注意到专门提供静态文件(即媒体)的速度很慢。
【讨论】:
【参考方案15】:禁用 AV 扫描并查看是否有影响。它也可能是由 Vista 引起的。升级到最新的服务包,然后重试。
【讨论】:
以上是关于django 在我的机器上很慢的主要内容,如果未能解决你的问题,请参考以下文章
用于单核 Windows 7 机器的 Node.js 电子应用程序在文件 I/O 上很慢
Flask-Login:在本地机器上不起作用,但在托管上很好