2009-12-22 10 views
5

Also ich versuche, mehr Web-Entwicklung in Python zu tun, und ich habe cherrypy ausgewählt, von Lighttpd w/Fastcgi gehostet. Aber meine Frage ist sehr einfach: Warum muss ich Lighttpd (oder Apache) jedes Mal neu starten, wenn ich meinen Anwendungscode oder den Code für eine zugrunde liegende Bibliothek ändere?fastcgi, cherrypy und python

Ich verstehe, dass diese Frage von einem grundlegenden mis (dh armes) Verständnis des Fastcgi-Modells ausgeht, also bin ich für jede Schule hier offen, aber ich bin es gewohnt, nur eine PHP-Datei zu ändern, und es zeigt, versus den Webserver abprallen lassen.

Jede Erläuterung/nützliche Spott geschätzt.

+1

"bounce"? Bedeutet das "Neustart" oder so? "Bounce" bezieht sich normalerweise in Computern auf einen Versuch, etwas zurückzuholen, das als Fehler oder ähnliche Konzepte abgelehnt wird. –

+0

Yup, bounce, wie in den Prozess neu starten. Normalerweise in meiner Erfahrung Leute immer über springen Apache, Tomcat, etc. usw. – Wells

+0

Related: http://stackoverflow.com/questions/1711483/python-web-hosting-why-are-server-restarts-necessary – miku

Antwort

8

Dies ist wegen der Leistung. Für die Entwicklung ist Autoreloading hilfreich. Aber für die Produktion, Sie nicht möchten, um erneut zu lesen. Dies ist eigentlich ein anständiger Engpass in PHP. Jedes Mal, wenn Sie auf eine PHP-Webseite zugreifen, muss der Server jede Seite von Grund auf analysieren und laden. Bei Python ist das Skript bereits geladen und wird nach dem ersten Zugriff ausgeführt.

Wie bereits erwähnt, hat CherryPy eine Autoreload-Einstellung. Ich würde empfehlen, den integrierten CherryPy-Server für die Entwicklung zu verwenden und lighttpd für die Produktion zu verwenden. Das wird Ihnen wahrscheinlich Zeit sparen. Die tutorial zeigt Ihnen, wie Sie dies tun.

+0

Danke - Ich merke eine Menge Kommentare auf ein Googeln, dass Flup nicht funktioniert, wenn cherrypy automatisch neu laden ist da - irgendwelche Ideen da? Ich denke, ich könnte ein WSPI-Modul verwenden, das nicht floppig ist. – Wells

+2

Bedenke, dass CherryPy eigentlich aus zwei Komponenten besteht: einem Framework und einem Server. Wenn Sie lighttpd verwenden, verwenden Sie nur das Framework. Wenn Sie den Server in der Entwicklung verwenden, brauchen Sie sich darüber keine Gedanken zu machen, da er automatisch automatisch lädt. Sobald Sie in Produktion gehen, * dann * würde ich zu lighttpd wechseln. –

0

Von einem System-Software-Writer Zeiger der Ansicht: Dies alles hängt davon ab, wie die Meta-Daten über den Server-Prozess in Ihrem Daemon (Lighttpd oder Fcgi) organisiert ist. Einige Programme sind nur für eine einmalige Initialisierung ausgelegt - MEIST dies ermöglicht ein viel einfacheres und leistungsfähigeres internes Programmiermodell.

Oft ist es sehr schwierig, einen Serverprozess zu konfigurieren, um Konfigurationsdaten auf einfache Weise neu zu laden. Möglicherweise müssen Sie Sperren und externe Ereignisobjekte (Signale in UNIX) einführen. Wenn Sie die Datenstrukturen nach Entwurf synchronisieren können - d. H. Nur einmal initialisieren ..., warum die Dinge komplizieren, indem Sie das Datenmodell mehrfach modifizierbar machen?