Джанго очень медленно работает на моей машине - PullRequest
15 голосов
/ 12 декабря 2008

У меня свежая установка django 1.0, и простая страница, от которой она загружается, загружается за 5 секунд. На компьютере моего коллеги это почти не занимает времени.

Я запускаю сервер, используя

python manage.py testserver

Я вижу, что каждый запрос GET (PNG и таблицы стилей) занимает около полсекунды.

Еще одна странная вещь, с которой, я думаю, связано, заключается в том, что функциональные тесты приложения выполняются на моей машине с MySQL намного медленнее (в 100 раз медленнее, чем на машине моего коллеги). Когда я настраивал приложение на использование sqlite, они запускались довольно быстро. Я хотел бы заявить, что sqlite не сильно меняет время загрузки страницы, но ускоряет запуск сервера.

Похоже, что проблемы с вводом-выводом, но я не вижу общих проблем с производительностью на моей машине, кроме django, по крайней мере.

Django работает на python2.4, я использую Vista. Я также проверил python2.5.

Спасибо ΤΖΩΤΖΙΟΥ, Это, должно быть, проблема DNS, потому что страница загружается быстро, как только вместо http://localhost:8000/app я иду к http://127.0.0.1:8000/app.

Но чем это могло быть вызвано? В моем хост-файле только две записи:

127.0.0.1   localhost
::1         localhost

Ответы [ 12 ]

18 голосов
/ 15 декабря 2008

Firefox имеет проблемы с просмотром localhost на некоторых машинах Windows. Вы можете решить эту проблему, отключив ipv6, что на самом деле не рекомендуется. Использование 127.0.0.1 напрямую - еще один способ решения проблемы.

7 голосов
/ 19 августа 2011

Ни один из этих постов не помог мне. В моем конкретном случае Джастин Кармони дал мне ответ.

Задача

Я отображал [hostname] .local в 127.0.0.1 в моем файле / etc / hosts для простоты разработки, а для запросов dns требовалось 5 секунд. Иногда они решались быстро, а иногда нет.

Решение

Apple использует .local для создания некоторого бонуса за счет более новых сборок Snow Leopard (думаю, я начал замечать это после обновления до 10.6.8) и Mac OS X Lion. Если вы измените свое имя хоста dev, чтобы начать с локального, а не с локального, у вас все будет готово. Кроме того, вы можете в значительной степени использовать любой TLD, кроме локального, и он будет работать без конфликтов.

Пример

test.local может стать:

  • local.test.com
  • test.dev
  • тест. [Все, кроме локального]

и ваша запись в файле hosts будет выглядеть так:

local.test.com  127.0.0.1

Примечание. Это решение имеет дополнительное преимущество: он является поддоменом [hostname] .com, что упрощает указание имени домена приложения для API Facebook и т. Д.

Может также потребоваться запустить dscacheutil -flushcache в терминале для корректной работы после обновления / etc / hosts

3 голосов
/ 12 декабря 2008

Поскольку вы сообщаете, что машина вашего друга не имеет задержек, и я предполагаю, что ваш и его компьютер сопоставимы, это может быть связано с DNS. Попробуйте добавить IP-адрес клиента и сервера в файл hosts сервера.

Если вы запускаете Django в * nix, это файл /etc/hosts. Если запустить его в MS Windows, это файл %WINDIR%\SYSTEM32\DRIVERS\ETC\HOSTS. (Они представляют собой текстовые файлы и могут быть отредактированы вашим любимым текстовым редактором.)

2 голосов
/ 25 января 2010

У меня была такая же проблема, я заметил это с Firefox на компьютерах с Vista и Windows 7. Доступ к серверу разработки 127.0.0.1:8000 решил проблему.

2 голосов
/ 19 марта 2009

У меня была такая же проблема в прошлом. Это можно решить, удалив следующую строку из вашего файла hosts.

::1         localhost

После этого вы сможете снова быстро использовать localhost.

2 голосов
/ 12 декабря 2008

Я думаю, что это сервер разработки, он не оптимизирован ни по скорости, ни по безопасности. Я заметил, что специальная обработка статических файлов (например, мультимедиа) идет медленно.

1 голос
/ 26 марта 2012

Обновление до Django 1.3 или новее.

Если у вас все еще есть эта проблема в 2012 году (с использованием Chrome), убедитесь, что вы выполняете обновление. В версии 1.3 исправлена ​​ошибка , связанная с медлительностью, когда сервер разработки был однопоточным.

Обновление решило мои проблемы. Я работал под Django 1.2, так как это стандартная версия Debian Squeeze.

1 голос
/ 23 августа 2011

У меня была такая же проблема, но она была вызвана mysqld.

Приложение работало довольно быстро на производстве с wsgi и сервером mysql на одном хосте, но медленно в среде разработки с опцией django runserver и удаленным сервером mysql.

Я заметил, используя «show processlist», что соединения в базе данных застряли в состоянии «логин» с пользователем «неаутентифицированный пользователь», и это заставляет меня заметить, что проблема в процессе аутентификации.

Ища настоящую проблему, я наконец заметил, что mysqld пытается получить DNS-имя моего ip и отключает разрешение DNS-имени, я исправил проблему.

Для этого вы можете добавить эту строку в файл my.cnf:

скип-имя-решительность

1 голос
/ 12 декабря 2008

А если ничего не помогает, вы всегда можете cProfile заявить и посмотреть, где именно находится узкое место.

0 голосов
/ 30 сентября 2011

У меня такая же проблема.

решение было:

  • Я пытался запустить локально версию, которая обычно была развернута на веб-сервере в производстве.
  • Статические файлы в работе обслуживались через конфигурацию apache, а не через django static serve

так что я просто раскомментировал свои статические URL-адреса : /

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...