Aus dem Internet habe ich erfahren, dass WSGI ein CGI für Python-Web-Entwicklung/Frameworks ist. FCGI scheint ein allgemeineres Gateway für eine Vielzahl von Sprachen zu sein. Ich kenne den Leistungsunterschied zwischen den beiden in Bezug auf die Sprachen Python und C/++ nicht.Gibt es einen Geschwindigkeitsunterschied zwischen WSGI und FCGI?
Antwort
Korrekt, WSGI ist eine programmatische Python-API-Definition und FASTCGI ist eine sprachunabhängige Socket-Drahtprotokolldefinition. Effektiv sind sie auf verschiedenen Schichten, wobei WSGI eine höhere Schicht ist. Mit anderen Worten, man kann WSGI zusätzlich zu etwas implementieren, das FASTCGI für die Kommunikation mit einem Webserver verwendet, aber nicht umgekehrt.
Im Allgemeinen bedeutet FASTCGI, dass es sich um ein Socket-Wire-Protokoll handelt, dass Sie immer eine Art von Programmierschnittstelle benötigen, um es zu verwenden. Für Python ist eine solche Option WSGI. Da FASTCGI nur ein Mittel zum Zweck ist, kann man seine Leistung in diesem Fall nicht wirklich mit WSGI vergleichen, da WSGI kein vergleichbares Socket-Wire-Protokoll ist, sondern ein Benutzer von FASTCGI selbst.
Man könnte versuchen, die Leistung von verschiedenen Sprachschnittstellen über FASTCGI zu vergleichen, aber im Allgemeinen ist das an sich ziemlich bedeutungslos, da die untere Netzwerkschicht und die Serveranforderungsbehandlung nicht der Flaschenhals sind. Stattdessen wird Ihr Anwendungscode und Ihre Datenbank sein.
Sie sind zwei verschiedene Dinge. WSGI ist eine Python-spezifische Schnittstelle zum Schreiben von Webanwendungen. Es gibt Wrapper für ungefähr jedes Webserverprotokoll, um die WSGI-Schnittstelle bereitzustellen. FastGCI (FCGI) ist eines dieser Webserver-Protokolle. WSGI ist also eine Abstraktionsschicht, während CGI/FastCGI/mod_python die tatsächlichen Webserver mit der Anwendung kommunizieren. Einige Code müssen die native Schnittstelle zu WSGI übersetzen (es gibt ein CGI-Modul in wsgiref
, es gibt flup
für FastCGI, etc.). Es gibt auch mod_wsgi für Apache, das die Übersetzung direkt in einem Apache-Modul durchführt, so dass Sie keinen Python-Wrapper benötigen.
Ich denke, es ist sinnvoll zu fragen, was der Zeitunterschied zwischen einer fcgi App, die auf eine Anfrage reagiert, und einer wsgi App, die auf eine Anfrage antwortet. Da es sich bei fcgi und wsgi um zwei verschiedene Möglichkeiten handelt, eine Programmiersprache mit einer Web-Anfrage zu verbinden, machen sie sehr ähnliche Dinge. – Ninjaxor