Lokaler WebServer für Django-Instanz

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
Benutzeravatar
cryzed
User
Beiträge: 82
Registriert: Samstag 28. März 2009, 15:53

Hallo,
Ich arbeite momentan an einem Django-Projekt das ganz einfach nur Client-seitig laufen soll, d.h. nicht für jedermann verfügbar sondern einfach nur lokal ansprechbar. Da der built-in development-server von Django leider nicht multi-threaded ist gibt es manchmal Probleme oder starke Verzögerungen und daher suche ich nach einem empfehlenswerten pure-Python Webserver mit dem es relativ einfach möglich ist eine Django Instanz laufen zu lassen.

Ich habe schon einiges über CherryPy gehört und über Tornado und ein paar andere potentielle Kandidaten, aber ich habe diese noch nie benutzt noch habe ich irgendwelche praktische Erfahrungen damit gesammelt - deswegen frage ich nach euren Meinungen.

PS: Wie man sicher vorstellen kann muss der Server jetzt nicht blitz-schnell sein, ich will einfach nur die Django-Instanz aus dem Browser heraus bedienen können ohne das sie anfängt zu blocken oder ähnliches.
Benutzeravatar
Whitie
User
Beiträge: 216
Registriert: Sonntag 4. Juni 2006, 12:39
Wohnort: Schulzendorf

Schau mal hier: http://www.arteme.fi/blog/2009/02/26/dj ... atic-files

Ist sehr einfach und gut in django integriert. Funktioniert bei mir prima.

Gruß
Whitie
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Warum Pure-Python? Ich würde nginx oder Cherokee empfehlen. Das sind so die schlankesten und schnellsten die ich kenne. Guckst du auch hier.

Achso, Fapws ist natürlich noch superschnell und extra für Python gedacht, allerdings auch nicht in Python, sondern C geschrieben.
Benutzeravatar
cryzed
User
Beiträge: 82
Registriert: Samstag 28. März 2009, 15:53

Pure-Python weil ich es gerne cross-platform hätte.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

Nimmst du nginx oder Cherokee ;-)
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

cryzed, lass dir nix von Dauerbaustelle einreden, Pure-Python und cross-Plattform ist IMHO besser als Extra-Software, die man extra installieren muss - vielleicht sogar selbst kompilieren muss.

CherryPy habe ich für ein intern genutzes Projekt absolut ausreichend gefunden.

Tornado kann IIRC seinen Stärken nicht unter Windows ausspielen (falls er da überhaupt läuft) und ist auch nicht multithreaded, was bedeutet, dass er durch starkes IO blockiert wird. Die Empfehlung ist hier dann wieder, mehre Python-Prozesse zu starten, die hinter einem nginx als Loadbalancer liegen und das spricht dann wieder gegen Cross-Plattform.

Stefan
Benutzeravatar
cryzed
User
Beiträge: 82
Registriert: Samstag 28. März 2009, 15:53

sma - das sehe ich ganz genauso so wie du, Ich habe es auch lieber wenn Python Module komplett cross-platform und Pure-Python sind ohne zusätzliche "Kompilirerei". Ich werde mir nachher CherryPy mal genauer anschauen - das hört sich vielversprechend an, vielen Dank. Aber ist CherryPy nicht mehr als einfach nur ein WebServer? Ist das nicht ein ganzes Web Framework?
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

sma hat geschrieben:cryzed, lass dir nix von Dauerbaustelle einreden
Ich neige dazu, das als beleidigend zu empfinden, und ich denke, dass "einreden" das falsche Verb für meine zwei obigen Posts ist.
sma
User
Beiträge: 3018
Registriert: Montag 19. November 2007, 19:57
Wohnort: Kiel

cryzed hat geschrieben:Aber ist CherryPy nicht mehr als einfach nur ein WebServer? Ist das nicht ein ganzes Web Framework?
Ja, das Ding kann noch mehr, aber das musst du ja nicht nutzen :)

Stefan
Benutzeravatar
cryzed
User
Beiträge: 82
Registriert: Samstag 28. März 2009, 15:53

Dauerbaustelle hat geschrieben:
sma hat geschrieben:cryzed, lass dir nix von Dauerbaustelle einreden
Ich neige dazu, das als beleidigend zu empfinden, und ich denke, dass "einreden" das falsche Verb für meine zwei obigen Posts ist.
Ich bin mir sicher das er es nicht beleidigend gemeint hat sondern eher spaßig - natürlich habe ich deine Vorschläge nicht als "einredend" empfunden, es ist aber leider nicht das was ich gesucht habe: Pure-Python und cross-platform. Vielen Dank trotzdem!
Benutzeravatar
Whitie
User
Beiträge: 216
Registriert: Sonntag 4. Juni 2006, 12:39
Wohnort: Schulzendorf

cryzed hat geschrieben:... Aber ist CherryPy nicht mehr als einfach nur ein WebServer? Ist das nicht ein ganzes Web Framework?
Für die beschriebene Methode reicht es den Ordner wsgiserver aus der Cherrypy installation zu kopieren und zu benutzen. Oder einfach die einzige Datei darin (__init__.py) rauskopieren und umbenennen. Sind dann um die 80 kB. Das ist dann wirklich nur der (Multithreaded) Server und der WSGI Dispatcher. Mit Hilfe von pyOpenSSL kann der dann sogar https bedienen.

Gruß
Whitie
Benutzeravatar
cryzed
User
Beiträge: 82
Registriert: Samstag 28. März 2009, 15:53

Vielen Dank für die Information Whitie - HTTPS werde ich allerdings für die lokale Instanz nicht brauchen, die __init__.py wird dann wohl reichen.
Antworten