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.
Effizient in Python / Django machbar
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.
-
- 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.
-
- User
- Beiträge: 996
- Registriert: Mittwoch 9. Januar 2008, 13:48
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? ;)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.