2011-01-01 9 views
0

Ich frage mich, welche Option ist stabiler (Performance abgesehen) und ist weit verbreitet (ich nehme an das weit verbreitete eine der stabilsten ist):am häufigsten verwendete Python-Web-App-Bereitstellung Stil

  • Apache -> mod_wsgi
  • apache -> mod_fcgid
  • apache -> mod_proxy_ajp
  • apache -> mod_proxy_http

für ein Projekt, das wird REST-Dienste mit kleinen json-formatierten Eingangs- und Ausgangsnachrichten und Webseiten mit bis zu 100 Req/s. Bitte kommentieren Sie Apache, wenn Sie denken, dass nginx usw. besser geeignet ist.

Danke.

+0

Ich wäre nicht überrascht, wenn die am weitesten verbreiteten noch cgi-bin ist. Weit verbreitet macht es nicht zum Besten. (Ich denke, es ist aber stabil) –

Antwort

0

100 Req/s ist heutzutage nicht so schwer zu erreichen.

Betrachten Sie die Bereitstellung, die Ihr Framework empfiehlt. Zope zum Beispiel hat einen anständigen Webserver eingebaut, also ist mod_proxy_http eine gute Implementierung.

Da wsgi zum Tragen kam, wurde es zum bevorzugten Mechanismus für viele Frameworks, und jetzt sind die eingebauten Webserver nur noch für die Entwicklung geeignet.

Unabhängig davon, was Sie jetzt bereitstellen, ist es wichtig, in der Lage zu sein, Teile des Stapels nach Bedarf zu wechseln/hinzuzufügen - möchten Sie einen Reverse Proxy für statischen Inhalt dort wo? Sie benötigen möglicherweise keins, wenn Sie nginx verwenden, da es statischen Inhalt von memcached ziemlich gut liefern kann.

Zusammenfassung: Verwendung wsgi

+0

ja dachte ich, ich kann Apache dafür auch verwenden. Für wsgi, empfehlen Sie direkt mod_wsgi oder fcgi und flup? Ich weiß nicht genau warum, aber ich hatte das Gefühl, dass mod_wsgi nicht viel gereift ist. Ich kann völlig falsch liegen. – mete

+0

@mete, mod_wsgi läuft für mehrere Monate gleichzeitig _ zumindest_. Ich habe keine Probleme damit gefunden. Wenn Sie einen bestimmten Inhaltstyp finden, der nicht richtig funktioniert, können Sie den Apache immer dazu bringen, diese URLs in einen anderen Handler umzuschreiben. –

+0

@mete, Für eine Neuentwicklung macht es keinen Sinn, flup zu verwenden. Bauen Sie Ihr System auf einem der vorhandenen Frameworks auf - Django, web2py, Pylonen usw. –

1

apache ->mod-wsgi ist derzeit die "empfohlene" Lösung. Aber es hängt auch ziemlich von Ihren Bedürfnissen ab.

Es gibt einen großen Unterschied zwischen der Ausführung von 1 starken Anwendungen im Vergleich zu 1 Lichtanwendung oder vielen Lichtanwendungen.

Persönlich ist meine bevorzugte Setup noch nginx ->apache ->mod_wsgi mit mehreren Apache-Server für schwere Websites.

+0

danke für die Antwort. was macht nginx vor dem apache? für statische Dateien? – mete

+0

@mete, nginx kann rudimentären Lastenausgleich durchführen –

+0

@mete: einfache Lastverteilung, Failover und statische Dateien. – Wolph