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

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

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
20
0
5 215
7
Перейти к ответу Данный вопрос помечен как решенный

Ответы 7

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

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

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

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

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

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

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

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

Ответ принят как подходящий

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

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

Вы все еще предпочитаете Apache / mod_wsgi почти 2,5 года спустя?

Dolph 03.03.2011 21:57

Если кого-то все еще волнует, разделение вашего wsgi-сервера с помощью uwsgi или gunicorn и выход на веб-сервер по вашему выбору - это направление, которое лучше всего работает для каждого проекта, который я видел. Оставаться с Apache - это своего рода смертный приговор для вашего сайта.

Jordan 16.08.2012 06:29

Nginx с mod_wsgi

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

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

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