Effizient in Python / Django machbar

Django, Flask, Bottle, WSGI, CGI…
Antworten
krk485
User
Beiträge: 4
Registriert: Dienstag 14. September 2010, 10:59

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.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

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.
krk485
User
Beiträge: 4
Registriert: Dienstag 14. September 2010, 10:59

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
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

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.
DasIch
User
Beiträge: 2718
Registriert: Montag 19. Mai 2008, 04:21
Wohnort: Berlin

@Dauerbaustelle Natürlich kann man jedes Problem mit noch mehr Rechenleistung lösen aber dass ist nicht unbedingt eine sinnvolle Lösung.
Dauerbaustelle
User
Beiträge: 996
Registriert: Mittwoch 9. Januar 2008, 13:48

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? ;)
Antworten