2008-12-12 6 views
15

Ich habe eine neue Installation von Django 1.0 und eine einfache Seite serviert von ihm dauert 5 Sekunden zu laden. Auf dem Computer meines Kollegen dauert es fast keine Zeit.Django ist sehr langsam auf meiner Maschine

ich starten Sie den Server

 
python manage.py testserver 

ich sehen kann jede GET Anfrage (PNGs und Stylesheets) nehmen etwa eine halbe Sekunde.

Eine andere seltsame Sache, die ich denke, ist, dass die Funktionstests für die App auf meinem Rechner mit MySQL viel langsamer laufen (in der Größenordnung von 100 Mal langsamer als auf der Maschine meines Kollegen). Wenn ich die App auf sqlite setze, laufen sie ziemlich schnell. Ich möchte ausrufen, dass sqlite nicht viel Zeit zum Laden einer Seite ändert, aber es beschleunigt den Serverstart.

Es sieht aus wie IO-Problem, aber ich sehe keine allgemeinen Leistungsprobleme auf meiner Maschine, abgesehen von mindestens Django.

Django läuft auf Python2.4, ich laufe Vista. Ich habe auch python2.5 überprüft.

Dank ΤΖΩΤΖΙΟΥ, Es muss totaly ein DNS-Problem, weil die Seite geladen wird schnell sein, sobald statt http://localhost:8000/app ich http://127.0.0.1:8000/app gehen.

Aber was könnte es verursacht werden? Meine Host-Datei hat nur zwei Einträge:

 
127.0.0.1 localhost 
::1   localhost 
+0

Ist dies das erste Mal, dass Sie die Seite oder jedes Mal anfordern? Auch wenn Sie runserver verwenden, ist es das gleiche? –

+0

Dies ist der blödeste Bug, den ich in meinem ganzen Leben gesehen habe! Meine Hosts-Datei ist leer, weil in Windows 7 diese beiden Zeilen [im DNS-Server selbst] verarbeitet werden (http://serverfault.com/questions/4689/windows-7-localhost-name-resolution-is-handled-within- DNS-selbst-warum). Und die gleichen Symptome! Hinzufügen von "127.0.0.1 localhost" Zeile löst es auf. Danke, Mann! –

Antwort

17

Firefox hat auf einigen Windows-Rechnern Probleme beim Durchsuchen von localhost. Sie können es lösen, indem Sie ipv6 ausschalten, was nicht wirklich empfohlen wird. Die direkte Verwendung von 127.0.0.1 ist eine andere Möglichkeit, das Problem zu umgehen.

+0

Auch wenn localhost in der hosts-Datei ist? Interessant ... – Powerlord

+0

Schöne Info, Fuzzyman! – tzot

+6

Gleiches Problem und Lösung unter Chrome unter Windows 7. –

0

Disable AV Scanning & sehen, ob das einen Unterschied macht. Es könnte auch von Vista verursacht werden. Führen Sie ein Upgrade auf das neueste Service Pack durch und versuchen Sie es erneut.

2

Ich denke, es ist der Entwicklungsserver, es ist nicht für Geschwindigkeit oder Sicherheit optimiert. Ich habe bemerkt, dass das Bereitstellen von statischen Dateien (d. H. Medien) langsam ist.

3

Da Sie berichten, dass die Maschine Ihres Freundes keine Verzögerungen hat, und ich nehme an, dass Ihre und seine Computer vergleichbar sind, könnte es sich um ein DNS-Problem handeln. Versuchen Sie, der Host-Datei des Servers sowohl die IP-Adresse des Clients als auch die des Servers hinzuzufügen.

Wenn Sie Django auf * nix ausführen, ist es die Datei /etc/hosts. Wenn es auf MS Windows ausgeführt wird, ist es die %WINDIR%\SYSTEM32\DRIVERS\ETC\HOSTS Datei. (Sie sind Textdateien und können von Ihrem bevorzugten Texteditor bearbeitet werden.)

+0

5 Sekunden Verzögerung klingt immer wie Namensauflösung Problem für mich. –

1

Und wenn alles andere fehlschlägt, können Sie immer cProfile Ihre Anwendung und sehen, wo genau der Engpass ist.

1

Ich hatte das gleiche Problem in der Vergangenheit. Es kann gelöst werden, indem Sie die folgende Zeile aus Ihrer Host-Datei entfernen.

::1   localhost 

Sobald das weg ist, sollten Sie in der Lage sein, localhost wieder schnell zu verwenden.

2

Hatte das gleiche Problem auch, ich habe es mit Firefox auf Vista und Windows 7 Maschinen bemerkt. Der Zugriff auf den Entwicklungsserver 127.0.0.1:8000 löste das Problem.

0

Um localhost vollständig zu umgehen, ohne die hosts-Datei oder irgendwelche Einstellungen in Firefox zu ändern, können Sie das Addon Redirector installieren und eine Regel zum Umleiten von localhost auf 127.0.0.1 erstellen. Verwenden Sie diese Einstellungen

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

Lassen Sie die anderen Felder leer.

7

Keiner dieser Beiträge hat mir geholfen. In meinem speziellen Fall gab Justin Carmony mir die Antwort.

Problem

ich es war, Diagramme [hostname] .local in meiner/etc 127.0.0.1/hosts-Datei für die einfache Entwicklung Zwecke und dns-Anfragen wurden 5 Sekunden unter aufzulösen. Manchmal lösten sie sich schnell, andere nicht.

Lösung

Apple mit .local auf einige bonjour Magie zu tun neuere Snow Leopard baut (ich glaube, ich begann es nach dem 10.6.8 Aktualisierung zu bemerken) und Mac OS X Lion. Wenn Sie Ihren Dev-Hostnamen so ändern, dass er mit Local beginnt anstatt mit Local zu enden, sollten Sie alles einstellen. Außerdem können Sie fast jede TLD außer lokal verwenden, und es wird ohne Konflikt funktionieren.

Beispiel

test.local könnte geworden:

  • local.test.com
  • test.dev
  • Test [alles andere als local]

. und Ihr Host-Dateieintrag würde lauten:

local.test.com 127.0.0.1 

Hinweis: Diese Lösung hat den zusätzlichen Vorteil, eine Sub-Domain von [Hostname] zu sein .com, die für Facebook-APIs es einfacher, geben Sie eine App Domain-Namen macht usw.

Vielleicht möchten auch Führen Sie dscacheutil -flushcache im Terminal für eine gute Maßnahme, nachdem Sie/etc/hosts

+0

das löste es auch für mich und ich bin ein Windows-Benutzer :-) Danke! – Esben

1

Ich hatte das gleiche Problem, aber es wurde von mysqld verursacht.

Die App funktionierte ziemlich schnell auf der Produktion mit wsgi und einem mysql Server auf dem gleichen Host, aber langsam in der Entwicklungsumgebung mit der django runserver Option und einem remote mysql Server.

Ich bemerkte mit "show processlist", dass Verbindungen in der Datenbank in den Zustand "Login" mit Benutzer "nicht authentifizierten Benutzer" stecken und dies macht mich feststellen, dass das Problem, wo in der Authentifizierung.

Auf der Suche nach dem eigentlichen Problem, habe ich endlich bemerkt, dass mysqld versuchte, den DNS-Namen meiner IP zu bekommen und deaktivieren Sie den Namen DNS-Auflösung, behob ich das Problem.

Um dies zu tun, können Sie diese Zeile in meine hinzufügen.cnf-Datei:

überspringen-name-resolve

0

bekam ich das gleiche Problem.

die Lösung war:

  • Ich versuche localy eine Version zu starten, die usualy auf einem Webserver in der Produktion eingesetzt wurde.
  • Die statischen Dateien in der Produktion von einer Apache-Konfiguration bedient wurden und nicht mit django statischen dienen

so ich nur statische dienen Urls meinen unkommentiert zurück:/

1

Upgrade auf Django 1.3 oder neuer.

Wenn Sie dieses Problem 2012 noch immer (mit Chrome) haben, stellen Sie sicher, dass Sie ein Upgrade durchführen. In Version 1.3 wurde eine bug behoben, die sich auf die Langsamkeit bezieht, wenn der Dev-Server mit einem einzelnen Thread ausgestattet war.

Aktualisierung behoben meine Probleme. Ich habe Django 1.2 ausgeführt, da dies der Standard unter Debian Squeeze ist.