В чем разница между scgi и wsgi?
В чем разница между этими двумя? Что лучше / быстрее / надежнее?
3 ответа
SCGI - это не зависящее от языка средство соединения интерфейсного веб-сервера и веб-приложения. WSGI - это специфичный для Python стандарт интерфейса для веб-приложений.
Хотя они оба имеют корни в CGI, они довольно различны по объему, и вы могли бы действительно вполне разумно использовать оба сразу, например, если бы mod_scgi на веб-сервере взаимодействовал с приложением WSGI, работающим как сервер SCGI. Существует несколько реализаций библиотек, которые будут запускать приложения WSGI в качестве серверов SCGI для вас (например, wsgitools, cherrypy).
Они оба являются "надежными" в той степени, в которой вы можете считать спецификацию надежной, в отличие от конкретной реализации. В эти дни вы, вероятно, написали бы свое приложение как вызываемое WSGI и рассмотрели вопрос развертывания отдельно.
Возможно, интерфейс Apache+mod_wsgi (встроенный) может быть немного быстрее, чем Apache+mod_scgi+(библиотека оболочки SCGI), но, по всей вероятности, он не будет сильно отличаться. Более ценным является возможность запуска приложения на различных серверах, платформах и стандартах подключения.
SCGI (как FastCGI) - это (сериализованный) протокол, подходящий для межпроцессного взаимодействия между веб-сервером и веб-приложением.
WSGI - это Python API, соединяющий два (или более) Python WSGI-совместимых модуля в одном процессе (интерпретатор Python). Один модуль представляет веб-сервер (являющийся либо реализацией внутрипроцессного веб-сервера Python, либо шлюзом к веб-серверу в другом процессе через, например, SCGI). Другой модуль представляет или представляет веб-приложение. Кроме того, ноль или более модулей между этими двумя модулями могут служить в качестве модулей промежуточного программного обеспечения WSGI, выполняющих такие функции, как управление сеансами / файлами cookie, кэширование содержимого, аутентификация и т. Д. В API WSGI используются такие функции языка Python, как итерация / генераторы и передача вызываемой программы. объекты между взаимодействующими WSGI-совместимыми модулями.
Они обе являются спецификациями для подключения веб-приложения к веб-серверу. Одно явное отличие состоит в том, что WSGI происходит из мира Python, и я считаю, что нет никаких реализаций без Python.
Спецификации, как правило, несопоставимы на основе лучшего / быстрее / надежного.
Только их реализации сопоставимы, и я уверен, что вы найдете хорошие реализации обеих спецификаций.