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