Какие варианты веб-сервера у нас есть при развертывании Python? процесс неэффективен вообще? - PullRequest
1 голос
/ 04 мая 2010

Я думаю, что в прошлом скрипты Python запускались из CGI, что создавало новый поток для каждого процесса.

Я новичок, поэтому я не совсем уверен, какие варианты у нас есть?

Является ли конвейер веб-сервера, на котором работает python, более или менее эффективным, чем, скажем, php?

Ответы [ 3 ]

6 голосов
/ 04 мая 2010

Вы все еще можете использовать CGI, если хотите, но в наши дни обычным подходом является использование WSGI на стороне Python, например через mod_wsgi на Apache или через мосты до FastCGI на других веб-серверах. По крайней мере, с mod_wsgi я не знаю никаких недостатков этого подхода.

Кстати, ваше описание CGI («создать новый поток для каждого процесса») является неточным: оно создает новый процесс для службы каждого запроса (и этому процессу обычно требуется открыть соединение с базой данных, импортировать все необходимое модули, и т. д. и т. д., что может сделать его медленным даже на платформах, где разветвление процесса само по себе довольно быстро (например, во всех вариантах Unix).

2 голосов
/ 04 мая 2010

Я бы предложил Django http://www.djangoproject.com. Он очень удобен в использовании, имеет все необходимое для создания веб-сервисов. Наиболее эффективный способ его использования - запустить его как через mod_wsgi Apache и заставить Apache сам обслуживать статические файлы.

Как правило, это имеет лучшую производительность, чем такие решения, как CGI и mod-python, поскольку процесс Python, выполняющий веб-службу, выполняется отдельно от основного веб-сервера, поэтому он может кэшировать данные и легко повторно использовать ресурсы (например, дескрипторы БД) .

Кроме того, вы можете настроить количество рабочих потоков для Apache и вашего веб-приложения по отдельности, что приведет к лучшей масштабируемости.

1 голос
/ 04 мая 2010

Я советую cherrypy (http://www.cherrypy.org/).. Он очень удобен в использовании, имеет все необходимое для создания веб-сервисов, но все еще довольно прост (без мега-фреймворка). Самый эффективный способ его использования - запустить он является автономным сервером на локальном хосте и помещает его за Apache через оператор Proxy, а сам apache обслуживает статические файлы.

Как правило, это имеет лучшую производительность, чем такие решения, как CGI и mod-python, поскольку процесс Python, выполняющий веб-службу, выполняется отдельно от основного веб-сервера, поэтому он может кэшировать данные и легко повторно использовать ресурсы (например, дескрипторы БД) .

Кроме того, вы можете настроить количество рабочих потоков для Apache и вашего веб-приложения по отдельности, что приведет к лучшей масштабируемости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...