webentwicklung-frage-antwort-db.com.de

WSGI vs uWSGi mit Nginx

Könnte jemand bitte die Vor- und Nachteile bei der Verwendung von WSGI VS WSGI mit Nginx erläutern.

Momentan baue ich einen Produktionsserver für die Django= Website auf, den ich vorbereitet habe, aber nicht entscheiden kann, ob ich mich für WSGI oder uWSGI entscheiden soll. Könnten Sie bitte im Detail erläutern, was die einzelnen Konfigurationen unterscheidet? Konfiguration sollte am besten skalieren?

Danke im Voraus

74
fear_matrix

Ok, Leute, diese Verwirrung ist auf den Mangel an Details aus verschiedenen Quellen zurückzuführen, auf die Benennung dieser Protokolle und auf das, was WSGI eigentlich ist.

Zusammenfassung:

  1. WSGI und uwsgi sind beide Protokolle , keine Server. Es wird verwendet, um mit Webservern zum Lastenausgleich zu kommunizieren und insbesondere um zusätzliche Funktionen zu nutzen, die reines HTTP nicht bieten kann. Bisher haben Nginx und Cherokee dieses Protokoll implementiert.
  2. uWSGI ist ein Server und eines der von ihm implementierten Protokolle ist WSGI (verwechseln Sie das uwsgi-Protokoll nicht mit dem uWSGI-Server). WSGI ist eine Python Spezifikation . Es gibt mehrere Implementierungen der WSGI-Spezifikation und diese soll nicht nur für Anwendungsserver/Webserver verwendet werden, sondern es gibt auch einige ein paar WSGI-Anwendungsserver (z. B. CherryPy, das auch einen produktionsbereiten WSGI-kompatiblen Webserver hat, wenn Sie nicht schon genug verwirrt waren!).
  3. Beim Vergleich von uwsgi mit WSGI werden Orangen mit Äpfeln verglichen.
90
Derek Litz

Im Allgemeinen ist es am besten, Python in einem separaten Prozess von Ihrem Hauptwebserver auszuführen. Auf diese Weise kann der Webserver viele kleine Threads haben, die sehr schnell statischen Inhalt bereitstellen, während Ihre separaten Python -Prozesse groß und schwer sind und jeder seinen eigenen Python -Interpreter ausführt. So einfach WSGI ist schlecht, weil es jeden einzelnen Ihrer Nginx-Threads mit einem großen Python -Interpreter aufbläht. Die Verwendung von flup oder gunicorn oder uWSGI hinter nginx ist viel besser, da dadurch Nginx für die einfache Bereitstellung von Inhalten frei wird und Sie auswählen können, wie viele kleine Lichtquellen angezeigt werden sollen nginx-Threads werden ausgeführt, unabhängig davon, wie viele schwere Python Threads Sie aufrufen, um dynamischen Inhalt bereitzustellen. Die Leute scheinen im Moment sehr zufrieden mit gunicorn zu sein, aber jede dieser drei Optionen sollte gut funktionieren.

In Zukunft können Sie auch Python auf einen anderen Server verschieben, wenn die Last ernst wird.

29
Brandon Rhodes

Ich halte das hier http://flask.pocoo.org/docs/deploying/uwsgi/ für eine gute Antwort, um die Verwirrung zu beseitigen. Die Frage ist nicht dumm, passiert jedem, der die beiden Begriffe sieht und keine vorherigen Informationen darüber hat, wie Dinge außerhalb der mod_PHP-Welt funktionieren (zum Beispiel nichts gegen PHP oder Leute).

Die Site ist gut geeignet, um in der Praxis zu erklären, was benötigt wird und was der Unterschied ist, sowie ein gutes Bereitstellungsbeispiel für Nginx.

15
Abhishek Dujari

Dieser Blog-Beitrag ist ein sehr detaillierter Vergleich von vielen Python WSGI-Servern, mit einer Zusammenfassung und einigen Empfehlungen am Ende.

2
Lowe Thiderman