Seite 1 von 1

Effizient in Python / Django machbar

Verfasst: Dienstag 14. September 2010, 11:10
von krk485
Hi zusammen,

ich möchte eine etwas umfangreichere Webanwendung entwickeln ,die Benutzern erlaubt eine Menge entfernter Datenbankbanken simultan abzufragen. Da ich kein PHP mehr sehen kann und bezweifle, dass die im Folgenden skzizzierte Anwendung in PHP sinnvoll umgesetzt werden kann, würde ich das ganze gerne in Python mittels Django umsetzen. Fraglich ist allerdings ob Python & Django das packen.

Die Benutzer der Anwendung stellen ihre Anfrage an meinen Server, der dann eine Reihe Threads aus einem Pool verwendet/erzeugt (am liebsten einen Thread pro Ziel-Datenbank). Diese Threads stellen diese Anfrage an jeweils einen distanten Server und treffen sich nachher um das Ergebnis generieren zu lassen.

- Habe ich bei hochgradig multithreading-betreibenden Anwendungen irgendwelchen Ärger mit Python/Django zu erwarten?
- Skaliert Django überhaupt brauchbar? Im Worst Case hätte man ja (AnzahlUser * AnzahlZieldatenbanken) aktive Threas im System
- Gibt es dafür vielleicht bessere / brauchbarere Frameworks?
- Bei RoR behauptet man gerne zur Skalierung bedarf es nur weiterer Prozessoren/Server. Kann ich Django auch mittels zus. Hardware befriedigen?

Vielen Dank jetzt schon für Durchlesen der Anfrage und eure Hinweise.

Re: Effizient in Python / Django machbar

Verfasst: Dienstag 14. September 2010, 13:05
von DasIch
Wenn du anfängst dich selbst um threading und multiprocessing zu kümmern wird dein Projekt mit aller Wahrscheinlichkeit scheitern. Ich würde dir empfehlen dir dafür mal celery anzusehen, dass kann solche "Tasks" asynchron über eine Queue ausführen.

Re: Effizient in Python / Django machbar

Verfasst: Mittwoch 15. September 2010, 18:11
von krk485
Hi DasIch,

vielen Dank für den Hinweis auf Celery. Es gibt Django-Unterstützung und ich kann das System scheinbar dadurch skalieren dem Framework CPUs hinter her zu werfen :D

Re: Effizient in Python / Django machbar

Verfasst: Donnerstag 16. September 2010, 17:51
von Dauerbaustelle
Ist es bei sowas nicht sinnvoller, ein paar Server zu haben (so 5 oder 10), und dann einen Workbalancer zu nutzen? Wenn dann der eine Server einen Request verarbeitet, der irgendwie lange in der Datenbank rumwurschtelt, können die übrigen immer noch die schnell verarbeitbaren Requests beantworten.

Re: Effizient in Python / Django machbar

Verfasst: Donnerstag 16. September 2010, 18:47
von DasIch
@Dauerbaustelle Natürlich kann man jedes Problem mit noch mehr Rechenleistung lösen aber dass ist nicht unbedingt eine sinnvolle Lösung.

Re: Effizient in Python / Django machbar

Verfasst: Donnerstag 16. September 2010, 19:16
von Dauerbaustelle
DasIch hat geschrieben:@Dauerbaustelle Natürlich kann man jedes Problem mit noch mehr Rechenleistung lösen aber dass ist nicht unbedingt eine sinnvolle Lösung.
Ich sprach nicht von mehr Rechenleistung. Ich sprach von einer Lösung, die gleichzeitige Verarbeitung ohne Threads ermöglicht. Weil Threads einfach relativ schwierig sauber zu programmierend sind, oder? ;)