Существует ли разница в скорости между WSGI и FCGI?

Из Интернета я почерпнул, что WSGI - это CGI для веб-разработки/фреймворков python. FCGI, похоже, является более обобщенным шлюзом для различных языков. Не знаю разницу в производительности между ними в отношении языков python и C/++.

Ответ 1

Правильно, WSGI является программным API-интерфейсом Python, а FASTCGI - это определение протокола проводника с использованием агностического языка. Эффективно они находятся на разных уровнях, причем WSGI является более высоким уровнем. Другими словами, можно реализовать WSGI поверх того, что так получилось, чтобы использовать FASTCGI для связи с веб-сервером, но не наоборот.

В общем, FASTCGI - это протокол сокетов, который означает, что для его использования всегда нужен какой-то программный интерфейс. Для Python одним из таких вариантов является WSGI. Поскольку FASTCGI - это всего лишь средство достижения цели, в этом случае нельзя сравнивать его производительность с WSGI, потому что WSGI не является сопоставимым протоколом сокетов, а сам пользователь FASTCGI.

Можно попытаться сравнить производительность различных языковых интерфейсов поверх FASTCGI, но в целом это совершенно бессмысленно, поскольку нижний уровень сетевого уровня и обработка запросов сервера не являются узким местом. Вместо этого ваш код приложения и база данных будут.

Ответ 2

Это две разные вещи. WSGI - это специфичный для Python интерфейс для написания веб-приложений. Существуют оболочки для любого протокола веб-сервера для предоставления интерфейса WSGI. FastGCI (FCGI) является одним из таких протоколов веб-сервера. Таким образом, WSGI - это уровень абстракции, а CGI/FastCGI/mod_python - это то, как фактические веб-серверы обращаются к приложению. Некоторый код должен перевести собственный интерфейс в WSGI (есть модуль CGI в wsgiref, есть flup для FastCGI и т.д.). Существует также mod_wsgi для Apache, который выполняет перевод непосредственно в модуле Apache, поэтому вам не нужна оболочка Python.