Запуск Django с FastCGI или с mod_python

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


person daniels    schedule 28.10.2008    source источник


Ответы (7)


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

  • Простое управление процессами демона.
  • В результате намного лучше изолированы процессы (запуск нескольких сайтов в одной конфигурации Apache с mod_python почти всегда заканчивается неприятностями — при этом происходит утечка переменных среды и расширений C между сайтами).
  • Простая перезагрузка кода (настройте его правильно, и вы можете просто коснуться файла .wsgi для перезагрузки вместо перезапуска Apache).
  • Более предсказуемое использование ресурсов. С mod_python использование памяти данным дочерним процессом Apache может сильно прыгать. С mod_wsgi он довольно стабилен: как только все загрузится, вы знаете, сколько памяти оно будет использовать.
person James Bennett    schedule 29.10.2008
comment
Вы все еще предпочитаете Apache/mod_wsgi почти 2,5 года спустя? - person Dolph; 03.03.2011
comment
Если кому-то все еще не все равно, то разделение вашего сервера wsgi с помощью uwsgi или gunicorn и выход на веб-сервер по вашему выбору — это направление, которое лучше всего работает для каждого проекта, который я видел. Оставаться с Apache — это что-то вроде смертного приговора для вашего сайта. - person Jordan; 16.08.2012

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

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

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

person bmdhacks    schedule 28.10.2008

Nginx с mod_wsgi

person Lucky    schedule 03.11.2008

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

person Javier    schedule 29.10.2008

Еще есть mod_wsgi, вроде работает быстрее, чем mod_python, а режим демона работает аналогично FastCGI.

person Urkonn    schedule 29.10.2008

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

Хотя особых экспериментов я не проводил :-)

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

person Jon Cage    schedule 28.10.2008

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

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

person dan mackinlay    schedule 20.11.2008