2012-12-13 16 views
5

Ich habe mir Python-Webserver angeschaut, die Skalierbarkeit bieten und entschieden, entweder mit Tornado (von Facebook FriendFeed verwendet) oder Gevent zu gehen. Da ich ziemlich neu bin, verließ ich mich auf die Benchmark of Python Web Servers, um Tornado und Gevent in die engere Wahl zu nehmen. Nach weiteren Recherchen habe ich folgendes herausgefunden:Ist gevent + gunicorn skalierbar und stabil für den Produktionseinsatz?

  • Gevent ist kein unabhängiger Webserver, wir brauchen entweder Libevent oder Gunicorn als Webserver.
  • Libevent hat seine pitfalls, wie SSL, Streaming, Keep Alive und Websockets nicht unterstützen.
  • Es gibt kein Benchmarking-Ergebnis, das ich finden könnte, welche Dokumente die Leistung von gevent und gunicorn zusammen verwendet.
  • Der Autor von gevent selbst hat jedem empfohlen, gevent + gunicorn für die tatsächliche Bereitstellung zu verwenden.
  • Meine Anforderungen:

    • Eine hoch skalierbare asynchrone Python-Webserver.
    • SSL-Unterstützung enthalten.
    • Ich bin besonders geneigt Gevent wegen seiner basierten Ansatz. Ich möchte nur einige harte Fakten beweisen, dass Gunicorn + Gevent eine gute Wahl ist und hoch skalierbar ist, in Verbindung mit Tornado. Oder gibt es einen anderen Python-Webserver, der meine Anforderungen erfüllt?

      Zeigen Sie mir in die richtige Richtung.

    Antwort

    12

    Zum Zeitpunkt des Schreibens, Gunicorn ist in Beta (Version 0.16) und GEVENT hat eine Release Candidate für 1,0 (Announcement on Google Groups), so könnte es sinnvoll sein, Änderungen in der API zu erwarten (weniger für GEVENT) das heißt, solange Sie die Mailinglisten verfolgen (hier: gunicorn, gevent) für Änderungen, die Ihre Anwendung brechen könnten, Sie mit einem Produktions Einsatz

    Gunicorn + GEVENT ist eine gute Wahl für einen asynchronen python Web sollte in Ordnung sein Server. Sie sollten Ihre eigenen Tests durchführen, um es mit Tornado zu vergleichen. Öffentlich verfügbare Benchmarking-Tests können irreführend sein, da sich Ihre Anwendung möglicherweise nicht wie die Benchmarks verhält.

    Für die SSL-Unterstützung empfehlen sowohl Gunicorn als auch Tornado, dass Sie sie hinter einem Reverse-Proxy wie nginx ausführen. Zusätzliche Vorteile, sie hinter einem Reverseproxy auszuführen, umfassen eine verbesserte Handhabung von slow clients und schlechte HTTP-Anfragen.

    +2

    Ausgezeichnete Antwort. Nur ein Schnitt für diejenigen, die es vielleicht lesen * heute *: Gunicorn kommt jetzt mit SSL-Unterstützung. – Phil