WSGI против uWSGi с Nginx
Может ли кто-нибудь объяснить профи/минусы при использовании WSGI VS uWSGI с Nginx.
В настоящее время я создаю производственный сервер для сайта Django, который я подготовил, но не могу решить, следует ли мне использовать WSGI или uWSGI. Не могли бы вы подробно объяснить, что отличает каждую конфигурацию? Какая конфигурация должна масштабироваться лучше всего?
Заранее спасибо
Ответы
Ответ 1
Хорошо, ребята, эта путаница из-за отсутствия деталей из нескольких источников и наименования этих протоколов и того, что на самом деле есть WSGI.
Резюме:
- WSGI и uwsgi оба протокола ARE, а не серверы. Он используется для связи с веб-серверами для балансировки нагрузки и особенно для использования дополнительных функций, которые не может обеспечить чистый HTTP. Пока Nginx и Cherokee внедрили этот протокол.
- uWSGI - это сервер, и один из протоколов, который он реализует, - WSGI (не путайте протокол uwsgi с сервером uWSGI). WSGI - это спецификация Python . Существует несколько реализаций спецификации WSGI, и она предназначена для использования не только для серверов приложений/веб-серверов, но существует довольно много серверов приложений WSGI (например, CherryPy, который также имеет готовый к производству WSGI-совместимый веб-сервер, если вы уже не были слишком смущены!).
- Сравнение uwsgi с WSGI - сравнение апельсинов с яблоками.
Ответ 2
Как правило, лучше всего запускать Python в отдельном процессе с вашего основного веб-сервера. Таким образом, веб-сервер может иметь множество крошечных потоков, которые очень быстро загружают статический контент, в то время как ваши отдельные процессы Python будут большими и тяжеловесными, и каждый из них будет запускать собственный интерпретатор Python. Таким образом, обычный WSGI
плохой, потому что он раздувает каждый из ваших потоков nginx с помощью большого интерпретатора Python. Использование flup
или gunicorn
или uWSGI
за nginx
намного лучше, потому что это освобождает nginx, чтобы просто обслуживать контент, и позволяет вам выбирать, сколько миниатюрных потоков nginx для запуска, независимо от вашего выбора того, сколько тяжелые потоки Python, которые вы используете для динамического контента. На данный момент люди очень довольны gunicorn
, но любой из этих трех вариантов должен работать нормально.
Идти вперед, он также освобождает вас, чтобы переместить Python на другой сервер, когда загрузка начинает серьезно.
Ответ 3
Я считаю, что это прямо здесь http://flask.pocoo.org/docs/deploying/uwsgi/ - хороший ответ, чтобы устранить путаницу. Вопрос не является глупым, случается с любым, кто видит эти два термина, и не имеет никакой предварительной информации о том, как все работает вне мира mod_PHP (например, ничего против php или людей)
Сайт хорошо объясняет, что нужно, и какая разница, а также хороший пример развертывания для nginx.
Ответ 4
Это сообщение в блоге - очень подробное сравнение многих серверов WSGI Python с кратким описанием и некоторыми рекомендациями в конце.