Size: a a a

Django [ru] #STAY HOME

2019 March 05

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
uWSGI так не умеет
источник

VI

Vasiliy Ivanov in Django [ru] #STAY HOME
спасибо за ответ
я уже настроил сервер по гайдам, которые легче всего было найти(их куча и на хабре, и на django docs, и в большинстве используется связка nginx + uwsgi), но все равно не до конца понимаю, что происходит, когда с клиента прилетает запрос
nginx же ведь не может сам переправить запрос на исполнение в джанго приложение? насколько я понял из статей в интернете это может сделать только uwsgi (потому что только он из-под капота умеет работать с питоном). получается nginx -- это опционально, но необязательно, а uwsgi (или любой веб-сервер, работающий с python) -- необходим ?
источник

M

MIKS in Django [ru] #STAY HOME
Vasiliy Ivanov
спасибо за ответ
я уже настроил сервер по гайдам, которые легче всего было найти(их куча и на хабре, и на django docs, и в большинстве используется связка nginx + uwsgi), но все равно не до конца понимаю, что происходит, когда с клиента прилетает запрос
nginx же ведь не может сам переправить запрос на исполнение в джанго приложение? насколько я понял из статей в интернете это может сделать только uwsgi (потому что только он из-под капота умеет работать с питоном). получается nginx -- это опционально, но необязательно, а uwsgi (или любой веб-сервер, работающий с python) -- необходим ?
Может работать как самостоятельный веб-сервер, так и в интеграции с Apache HTTP Server[4], Nginx[5][6], Cherokee HTTP Server и другими.
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
Vasiliy Ivanov
спасибо за ответ
я уже настроил сервер по гайдам, которые легче всего было найти(их куча и на хабре, и на django docs, и в большинстве используется связка nginx + uwsgi), но все равно не до конца понимаю, что происходит, когда с клиента прилетает запрос
nginx же ведь не может сам переправить запрос на исполнение в джанго приложение? насколько я понял из статей в интернете это может сделать только uwsgi (потому что только он из-под капота умеет работать с питоном). получается nginx -- это опционально, но необязательно, а uwsgi (или любой веб-сервер, работающий с python) -- необходим ?
> nginx же ведь не может сам переправить запрос на исполнение в джанго приложение?
джанго-приложение - такой сущности нет
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
есть некий app-сервер, который импортирует application из wsgi.py
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
и начинает слушать некий порт, на который и приходят запросы к нему
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
запросы могут идти напрямую или через различные наборы проксей и балансировщиков, всё может быть устроено очень сложно
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
вот этот app-сервер - это обычно uWSGI или Gunicorn, которые инклудят Django-приложение, они это делают на старте, вся эта инициализация идёт 1 раз) ну, если это не serverless, но и там свои особенности...) примерно поэтому изменение файлов проекта требует перезагрузки сервера приложений (иначе изменения не будут видны, что новичков очень удивляет, которые к такому после php не привыкли)
источник
2019 March 06

VI

Vasiliy Ivanov in Django [ru] #STAY HOME
спасибо за разъяснение, теперь хотя бы понятно в какую сторону гуглить)
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
лучше начинать с задачи) с того, зачем тебе всё это)
источник

A

Andrey in Django [ru] #STAY HOME
@lorddaedra на nginx unit не смотрели?
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
мне не так важна производительность решения на Django, поэтому я особо не заморачивался с этим, но судя по тестам, uWSGI получше
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
мне nginx идеологически не очень нравится, точнее, некоторые решения там
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
там есть API, которое доступно только в nginx plus (он платный и дорогой)
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
я считаю, что у любого полноценного сервиса в 2019 году должно быть какое-то API и в бесплатной версии
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
хотя, возможно, я ошибаюсь и там есть API и в бесплатной версии (именно в nginx unit)
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
вообще, nginx unit поддерживает только WSGI, там нет поддержки интерфейса ASGI

о чём это говорит? о том, что те приложения, для которых реально была бы важна скорость и всякие бенчмарки, там запустить не получится
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
nginx unit как конкурент https://github.com/encode/uvicorn был бы интересен
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
например, если бы туда сделали поддержку http/2
источник

AO

Alexander Ovchinnikov 🦁 in Django [ru] #STAY HOME
то есть у uvicorn'а поддержки http/2 сейчас нет и если бы ребята из команды nginx'а бы подсуетились, возможно, они бы сделали самый крутой способ деплоить ASGI-приложения...

а что касается WSGI-приложений - кому была важна скорость или количество обрабатываемых запросов на сервере - те убежали на ASGI-фреймворки, те, кто не убежал, тех вполне устраивает и uWSGI/Gunicorn, вряд ли, даже если вдруг nginx unit станет крутым, они будут шевелиться и менять что-то, что это даст?

например, тот же uWSGI умеет запускать задачи в кроне, мелочь, а приятно
источник