Есть ли разница в скорости между WSGI и FCGI?
Из Интернета я узнал, что WSGI - это CGI для веб-разработки и фреймворков на Python. FCGI, похоже, является более общим шлюзом для множества языков. Не знаю разницу в производительности между этими двумя ссылками на языки Python и C/++.
2 ответа
Правильно, WSGI - это определение программного API для Python, а FASTCGI - определение протокола проводной сокета, не зависящего от языка. Фактически они находятся на разных уровнях, а WSGI - более высокий уровень. Другими словами, можно реализовать WSGI поверх чего-то, что случилось с использованием FASTCGI для связи с веб-сервером, но не наоборот.
В общем, FASTCGI, являющийся протоколом проводного сокета, означает, что для его использования всегда требуется какой-то программный интерфейс. Для Python одним из таких вариантов является WSGI. Поскольку FASTCGI - это всего лишь средство для достижения цели, в этом случае невозможно сравнить его производительность с WSGI, поскольку WSGI - не сопоставимый протокол проводной сокет, а сам пользователь FASTCGI.
Можно попытаться сравнить производительность различных языковых интерфейсов поверх FASTCGI, но в целом это само по себе совершенно бессмысленно, поскольку нижний сетевой уровень и обработка запросов к серверу не являются узким местом. Вместо этого будет ваш код приложения и базы данных.
Это две разные вещи. WSGI - это специальный Python-интерфейс для написания веб-приложений. Существуют оболочки для любого протокола веб-сервера, обеспечивающие интерфейс WSGI. FastGCI (FCGI) является одним из таких протоколов веб-сервера. Итак, WSGI - это уровень абстракции, а CGI/FastCGI/mod_python - это то, как реальные веб-серверы взаимодействуют с приложением. Некоторый код должен переводить собственный интерфейс в WSGI (в CGI есть модуль wsgiref
, есть flup
для FastCGI и т. д.). Существует также mod_wsgi для Apache, который выполняет перевод непосредственно в модуле Apache, так что вам не нужна оболочка Python.