Запуск Django с FastCGI или с mod_python - PullRequest
20 голосов
/ 29 октября 2008

что бы вы порекомендовали? что быстрее, надежнее? apache mod_python или nginx / lighttpd FastCGI?

Ответы [ 7 ]

21 голосов
/ 29 октября 2008

Я сделал и то и другое, и Apache / mod_python, как правило, с ним легче работать и более стабилен. Но сейчас я перепрыгнул на Apache / mod_wsgi, это все, что я когда-либо хотел, и даже больше:

  • Простое управление процессами демона.
  • В результате намного лучшая изоляция процесса (запуск нескольких сайтов в одном и том же конфиге Apache с mod_python почти всегда приводит к проблемам - переменные среды и расширения C протекают через сайты при этом). 1008 *
  • Простая перезагрузка кода (настройте его правильно, и вы можете просто коснуться файла .wsgi для перезагрузки вместо перезапуска Apache).
  • Более предсказуемое использование ресурсов. С помощью mod_python использование памяти данным дочерним процессом Apache может много чего изменить. С mod_wsgi он довольно стабилен: как только все загрузится, вы знаете, сколько памяти он будет использовать.
6 голосов
/ 29 октября 2008

lighttpd с FastCGI будет номинально быстрее, но на самом деле время, затрачиваемое на выполнение кода Python и любых попаданий в базу данных, приведет к абсолютному снижению производительности, которую вы получаете между веб-серверами.

mod_python и apache дадут вам немного больше гибкости в функциональном отношении, если вы хотите написать код вне django, который выполняет такие вещи, как дайджест-аутентификация или получение / настройка любого необычного HTTP-заголовка. Возможно, вы хотите использовать другие встроенные функции apache, такие как mod_rewrite.

Если память вызывает беспокойство, то избежание использования формы apache / mod_python очень поможет. Apache, как правило, использует много оперативной памяти, и код mod_python, который вписывается во все функции apache, также занимает много места в памяти. Не говоря уже о многопроцессорном характере apache, как правило, потребляет больше оперативной памяти, поскольку каждый процесс увеличивается до размера самого интенсивного запроса.

5 голосов
/ 03 ноября 2008

Nginx с mod_wsgi

2 голосов
/ 20 ноября 2008

Я бы порекомендовал конфигурации WSGI; Я имею в виду отказаться от Apache, но на сервере всегда есть какое-то устаревшее приложение, которое, кажется, требует его. Кроме того, экология приложения WSGI очень разнообразна, и она позволяет использовать такие хитрые уловки, как связующее звено WSGI между сервером и приложением.

Однако в настоящее время известны проблемы с некоторыми приложениями и apache mod_wsgi , особенно с некоторыми приложениями ctypes, поэтому будьте осторожны, если вы пытаетесь запустить, скажем, geodjango , использующий ctypes широко. В настоящее время я работаю над этими проблемами, возвращаясь к fastcgi сам.

2 голосов
/ 29 октября 2008

Также есть mod_wsgi, он работает быстрее, чем mod_python, а режим демона работает аналогично FastCGI

2 голосов
/ 29 октября 2008

Я использую его с nginx. не уверен, что это действительно быстрее, но, конечно, меньше ОЗУ / загрузка процессора. Также проще запустить несколько процессов Django и сделать так, чтобы nginx отображал каждый префикс URL на другой сокет. все еще не в полной мере использует модуль memcached nginx, но первые тесты показывают огромное преимущество в скорости.

2 голосов
/ 29 октября 2008

Лично я уже некоторое время работал с FastCGI (6 месяцев или около того), и время отклика «кажется» быстрее при загрузке страницы таким образом по сравнению с mod___python. Однако критическая причина для меня заключается в том, что я не мог найти очевидный способ сделать несколько сайтов из одной и той же установки apache / mod_python, тогда как FastCGI был относительно легким.

Я не проводил особо тщательных экспериментов: -)

[Редактировать] Хотя, исходя из опыта, в первый раз настройка FastCGI может быть немного болезненной. Я имею в виду написать руководство ..!

...