В чем разница между 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.

Спецификации, как правило, несопоставимы на основе лучшего / быстрее / надежного.

Только их реализации сопоставимы, и я уверен, что вы найдете хорошие реализации обеих спецификаций.

Возможно, читать и читать.

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