2 Stimmen

Python Webserver-Optionen mit Nicht-Blockierender Architektur

Ich suche nach einer Python-basierten nicht blockierenden Webserver-Umgebung, die dafür ausgelegt ist, eine große Anzahl von gleichzeitigen Verbindungen zu verarbeiten und auch unter hoher Last reaktionsschnell zu sein (C10K). Ich benötige dies als Backend für meine Web-App. In einem typischen Szenario wird der Web-App-Client mehrere Aufrufe an den Server über WebSockets machen.

Bisher habe ich 2 Optionen im Python-Bereich gefunden.

Außerhalb von Python gibt es natürlich auch node.js, aber ich würde eine Python-Codierungsumgebung bevorzugen, wenn möglich.

Welchen der beiden oben genannten (oder andere, von denen ich nicht weiß) würden Sie empfehlen? Was sind die Vor- und Nachteile? Oder sollte ich mein eigenes Framework erstellen, indem ich eine nicht blockierende Oberfläche für web.py schreibe?

Meine Sorge ist, obwohl beide oben genannten Projekte eine gute Community-Unterstützung zu haben scheinen, sind sie nicht so weit verbreitet wie Django, CherryPy, Pylon etc. Daher fürchte ich, eine Wahl zu treffen, die möglicherweise in Zukunft zu geringer Unterstützung führen könnte.

4voto

Jean-Paul Calderone Punkte 46659

Als einer der Kernentwickler von Twisted empfehle ich dringend, dass Sie Twisted verwenden. :)

Erstens, weil es sich um eine ausgezeichnete Bibliothek mit einem Entwicklungsteam handelt, das sich zu qualitativ hochwertiger Software verpflichtet hat. Twisted bietet eine extrem breite Palette von Funktionen, von einem (gut performing) einfachen Webserver bis zur Datenbankintegration (entweder thread-basiert in Twisted selbst oder thread-frei in txmysql oder txpostgres, separat verteilt) bis hin zur Unterstützung für andere Protokolle wie FTP, DNS, XMPP, SMTP und viele, viele mehr. Ja, sogar WebSockets.

Zweitens, weil es die beste Lösung für große Netzwerkserver in Python ist, die Sie finden werden. Da Sie mit C10K vertraut sind, denke ich nicht, dass ich das weiter erklären muss. Es genügt zu sagen, dass Twisted bereits in wiederholt in großen Systemen verwendet wurde, um enorme Anzahl von Verbindungen zu verarbeiten.

Drittens, weil es eine große, aktive Community gibt, die nicht so schnell verschwinden wird und viele Unterstützungsoptionen bietet. Wenn man die Mailingliste, den IRC-Kanal und stackoverflow zusammen betrachtet, gibt es keinen Mangel an Möglichkeiten, Hilfe zu bekommen.

3voto

abbot Punkte 26222

Es gibt noch mehr gute Optionen. Du solltest dir ein sehr gutes Review über asynchrone Python-Server von Nicolas Piel ansehen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X