Есть ли разница в скорости между 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.

Другие вопросы по тегам