2009-11-17 4 views

Odpowiedz

67

Prawidłowo WSGI jest programistyczną definicją API Python, a FASTCGI jest językową definicją protokołów z protokołem gniazdkowym. W rzeczywistości są one na różnych warstwach, a WSGI jest warstwą wyższą. Innymi słowy, można zaimplementować WSGI na czymś, co zdarzyło się użyć FASTCGI do komunikacji z serwerem WWW, ale nie na odwrót.

Ogólnie rzecz biorąc, FASTCGI będący protokołem z gniazdem oznacza, że ​​zawsze potrzebujesz jakiegoś specjalnego interfejsu programistycznego, aby go użyć. Dla Pythona jedną z takich opcji jest WSGI. Ponieważ FASTCGI jest tylko środkiem do osiągnięcia celu, nie można tak naprawdę porównać jego wydajności z WSGI w tym przypadku, ponieważ WSGI nie jest porównywalnym protokołem z gniazdem, ale jest użytkownikiem samego FASTCGI.

Można próbować porównać wydajność różnych interfejsów językowych na górze FASTCGI, ale ogólnie rzecz biorąc, jest to zupełnie bez znaczenia, ponieważ niższa warstwa sieci i obsługa żądań serwera nie są wąskim gardłem. Zamiast tego będzie twój kod aplikacji i baza danych.

+1

Myślę, że warto zapytać, jaka jest różnica czasu między aplikacją fcgi odpowiadającą na prośbę a aplikacją wsgi odpowiadającą na żądanie. Ponieważ fcgi i wsgi to dwa różne sposoby na połączenie języka programowania z żądaniem internetowym, robią bardzo podobne rzeczy. – Ninjaxor

20

To dwie różne rzeczy. WSGI to specyficzny dla Pythona interfejs do pisania aplikacji internetowych. Istnieją opakowania dla dowolnego protokołu serwera WWW, aby zapewnić interfejs WSGI. FastGCI (FCGI) jest jednym z takich protokołów serwera WWW. Tak więc WSGI jest warstwą abstrakcji, podczas gdy CGI/FastCGI/mod_python to sposób, w jaki rzeczywiste serwery WWW rozmawiają z aplikacją. Jakiś kod musi przetłumaczyć macierzysty interfejs na WSGI (istnieje moduł CGI w wsgiref, jest tam flup dla FastCGI itp.). Istnieje również mod_wsgi dla Apache, który wykonuje tłumaczenie bezpośrednio w module Apache, więc nie potrzebujesz żadnego opakowania Pythona.

Powiązane problemy