18

我有一个全新的 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://localhost:8000/app我去http://127.0.0.1:8000/app

但它可能是由什么引起的?我的主机文件只有两个条目:

127.0.0.1 本地主机
::1 本地主机
4

15 回答 15

19

Firefox 在某些 Windows 机器上浏览 localhost 时出现问题。您可以通过关闭 ipv6 来解决它,这不是真正推荐的。直接使用 127.0.0.1 是解决问题的另一种方法。

于 2008-12-15T14:46:40.337 回答
8

这些帖子都没有帮助我。在我的具体情况下,贾斯汀卡莫尼给了我答案。

问题

为了便于开发,我在我的 /etc/hosts 文件中将 [hostname].local 映射到 127.0.0.1,并且 dns 请求需要 5 秒才能解决。有时他们会很快解决,有时他们不会。

解决方案

Apple 正在使用 .local 在较新的 Snow Leopard 构建(我想我在更新到 10.6.8 后开始注意到它)和 Mac OS X Lion 上做一些 bonjour 魔法。如果您将您的开发主机名更改为以本地开头而不是以本地结尾,那么您应该一切就绪。此外,除了本地之外,您几乎可以使用任何 TLD,并且它可以毫无冲突地工作。

例子

test.local 可能变成:

  • local.test.com
  • 测试开发
  • 测试。[除本地之外的任何内容]

并且您的主机文件条目将显示为:

local.test.com  127.0.0.1

注意:此解决方案具有作为 [hostname].com 的子域的额外好处,这使得为 Facebook API 等指定应用程序域名变得更加容易。

dscacheutil -flushcache更新 /etc/hosts 后,可能还想在终端中运行

于 2011-08-19T14:43:11.203 回答
4

我过去也遇到过同样的问题。可以通过从主机文件中删除以下行来解决。

::1         localhost

一旦它消失了,您应该能够快速再次使用 localhost。

于 2009-03-19T15:04:52.720 回答
3

由于您报告您朋友的计算机没有延迟,并且我假设您和他的计算机是可比的,这可能是与 DNS 相关的问题。尝试将客户端和服务器的 IP 地址都添加到服务器的 hosts 文件中。

如果你在 *nix 上运行 Django,它就是/etc/hosts文件。如果在 MS Windows 上运行它,它就是%WINDIR%\SYSTEM32\DRIVERS\ETC\HOSTS文件。(它们是文本文件,可以通过您喜欢的文本编辑器进行编辑。)

于 2008-12-12T17:41:00.330 回答
2

我认为它是开发服务器,它没有针对速度和安全性进行优化。我注意到专门提供静态文件(即媒体)的速度很慢。

于 2008-12-12T14:25:51.163 回答
2

也有同样的问题,我在 Vista 和 Windows 7 机器上的 Firefox 上注意到了它。访问开发服务器 127.0.0.1:8000 解决了这个问题。

于 2010-01-25T20:07:24.790 回答
1

如果所有其他方法都失败了,您始终可以对您的应用程序进行cProfile并查看瓶颈到底在哪里。

于 2008-12-12T17:46:33.830 回答
1

我有同样的问题,但它是由 mysqld 引起的。

该应用程序在生产环境中使用 wsgi 和 mysql 服务器在同一主机上运行得非常快,但在使用 django runserver 选项和远程 mysql 服务器的开发环境中运行缓慢。

我注意到使用“显示进程列表”时,数据库中的连接卡在用户“未经身份验证的用户”的“登录”状态,这让我注意到身份验证过程中的问题。

寻找真正的问题,我终于注意到mysqld试图获取我的ip的dns名称并禁用名称dns解析,我解决了这个问题。

为此,您可以将此行添加到 my.cnf 文件中:

跳过名称解析

于 2011-08-23T08:29:06.863 回答
1

升级到 Django 1.3 或更新版本。

如果您在 2012 年仍然遇到此问题(使用 Chrome),请确保您正在升级。在 1.3 中,修复了与开发服务器为单线程时速度慢有关的错误。

升级解决了我的问题。我正在运行 Django 1.2,因为这是 Debian Squeeze 的默认设置。

于 2012-03-26T12:43:31.140 回答
1

我这样解决了这个问题:

setting.py设置

DEBUG = False
于 2020-03-09T08:08:30.503 回答
0

禁用 AV 扫描并查看是否有所不同。它也可能是由 Vista 引起的。升级到最新的服务包,然后重试。

于 2008-12-12T14:09:54.063 回答
0

要在不更改主机文件或 Firefox 中的任何设置的情况下完全绕过 localhost,您可以安装插件重定向器并制定从 localhost 重定向到 127.0.0.1 的规则。使用这些设置

Include pattern : http://localhost*
Redirect to     : http://127.0.0.1$1

将其他字段留空。

于 2010-02-05T18:30:11.603 回答
0

我有同样的问题。

解决方案是:

  • 我试图在本地启动一个通常部署在生产网络服务器上的版本。
  • 生产中的静态文件由 apache 配置提供,而不是由 django static serve

所以我只是取消了我的静态服务网址的注释:/

于 2011-09-30T15:41:17.810 回答
0

静态文件加载缓慢

如果您注意到静态和媒体文件(图像、样式表等)的加载速度特别慢,那么问题可能出在 Django 的开发服务器(python manage.py runserver)上。正如hassen所指出的,该服务器未针对速度进行优化。

您可以尝试使用带有选项的django-extensions runserver_plus命令来--threaded替代 Django 的runserver命令。在底层,它使用 Werkzeug 作为线程化的 WSGI 服务器。您可能会注意到静态文件加载时间的巨大改进。

另请参阅:使 Django 开发服务器更快地为静态媒体提供服务

于 2019-07-25T13:26:32.810 回答
0

对我来说,它是 Django 调试工具栏——它在需要时非常有用,但在不需要时它会减慢开发速度,这可能会非常令人沮丧且难以识别。我发现在开发过程中禁用它会更好,除非你需要它。:僵尸永不死:

于 2021-09-19T20:35:58.617 回答