Django Unchained - поговорим

S
На сайте с 23.05.2004
Offline
294
#11
Sly32:
Например про 3.0 со встроенным ASGI - вот с асинхронностью вообще мало в питоне работал, это большое упущение

Вообще не представляю куда в джанге асинхронность пихать, т.е. зачем, в каких задачах.

danforth:
python медленно.
все уже давно фронт делают на спа, бекенд на го. орм есть (если он вообще нужен), в том числе и кодген без рефлексии. офигенная стдлиб, зависимости в бинарнике, быстрая скорость работы и маленькое потребление ресурсов, многопоток в рантайме, очень быстрый гц.

Джанга - это в первую очередь быстрая разработка. К тому времени пока проект взлетит и начнет упираться в скорость, код по 5 раз успеет измениться.

Что за "спа" такое ?

Это просто мой личный сайт (https://phpdevs.com/) в моей подписи.
Aisamiery
На сайте с 12.04.2015
Offline
226
#12
Stek:
Что за "спа" такое ?

Вероятнее всего single page application, но возможно и сауна:))

Джанга вообще интересная тема.... но не мне:((

Разработка проектов на Symfony, Laravel, 1C-Bitrix, UMI.CMS, OctoberCMS
Sly32
На сайте с 29.03.2012
Offline
244
#13
Stek:
Вообще не представляю куда в джанге асинхронность пихать, т.е. зачем, в каких задачах

ровно туда же - куда в других асинхронных ФВ. Например когда операции IO блокирующие. Мы вот уже уткнулись в моменты, когда количество пользователей превышает возможности системы. Пока спасают брокеры типа кафки, раббита. Бывает приходит одновременно под сотню человек, а это не просто просмотр страниц, активное взаимодействие - просмотреть видео, пройти тест, загрузить ответы. И бедная наша джанга начинает грустить.

D
На сайте с 18.12.2015
Offline
151
#14
Stek:
Джанга - это в первую очередь быстрая разработка. К тому времени пока проект взлетит и начнет упираться в скорость, код по 5 раз успеет измениться.

Ну, в случае Go, на нем реально быстро разрабатывать. Если создать свой микрофреймворк с бойлерплейтом, и с него стартовать - то выходит не плохо. Например, описываешь OpenAPI файлик, он генерирует модели, и хендлеры. ORM накидывает методы на эти модели. Далее, ты с того же файлика генерируешь клиент (хоть на TypeScript с типизацией), который знает куда ходить и что прийдет в ответе. Единственное, что доставляет боль в моем случае - это верстка.

Имхо, рендерить на бекенде, это плохая заетя. Зачем гонять десятки киллобайт туда сюда, если меняется только по сути 5-10% страницы (несколько сотен байт). Раньше был аргумент, что поисковики не индексируют этот контент, сейчас это уже не актуально, а в будущем, скорее всего, спа сайты будут ранжироваться выше, т.к. они грузятся быстрее, эффективней, и т.д.

Сейчас кстати в Laravel практикуют такой подход, там уже вшит vue.js, и есть интеграция с ним.

Stek:
Что за "спа" такое ?
Aisamiery:
single page application
Junior Web Developer
Aisamiery
На сайте с 12.04.2015
Offline
226
#15
Sly32:
ровно туда же - куда в других асинхронных ФВ. Например когда операции IO блокирующие. Мы вот уже уткнулись в моменты, когда количество пользователей превышает возможности системы. Пока спасают брокеры типа кафки, раббита. Бывает приходит одновременно под сотню человек, а это не просто просмотр страниц, активное взаимодействие - просмотреть видео, пройти тест, загрузить ответы. И бедная наша джанга начинает грустить.

У нас на битрикс нагрузка 300-400 rps в акции на интернет магазине и мы не грустим в целом. Решать вопросы нагрузки средствами языка как то сильно больно, выносите критичные вещи в микросервисы и в моменты пиков просто расширяйте где то в облаке. Автоскейлинг сейчас есть абсолютно везде на вменяемых площадках.

Асинхронные вызовы как раз с блокирующими операциями не используют, прикольно асихронный поток заблокировать - прям гениальное решения. Вы наверное больше имели ввиду многопоточность, когда на блокирующую операцию можно породить новый поток, который свободно может висеть под блокирующей операцией не блокируя основной? Только это не подход асинхронного программирования. А в питоне я не знаю как сейчас, но раньше были некоторые проблемы с многопоточностью, для таких вещей уж лучше Erlang и на его машине построенные (elixir например) или тот же rust, но уж точно не питон.

---------- Добавлено 15.12.2019 в 14:52 ----------

danforth:
Сейчас кстати в Laravel практикуют такой подход, там уже вшит vue.js, и есть интеграция с ним.

Что там вшитого? Сейчас вшить Vue.js в любой сайт ровно точно так же по действиям как и вшить jquery. Если мы говорим про spa то это уже такие решения как next.js и nuxt.js, это так сказать самый коробочные варианты, но они никуда не вшиты и надо понимать что делаешь. Сейчас проще взять какой нибудь nuxt/next.js + apiPlatform, чем ларавел с подключенной vuejs

S
На сайте с 23.05.2004
Offline
294
#16
Sly32:
Бывает приходит одновременно под сотню человек, а это не просто просмотр страниц, активное взаимодействие - просмотреть видео, пройти тест, загрузить ответы. И бедная наша джанга начинает грустить.

Мне пока ни разу не довелось столкнуться с ситуацией, что бы тормозила именно джанга. Всегда все упирается в базу по итогу.

danforth:
Ну, в случае Go, на нем реально быстро разрабатывать. Если создать свой микрофреймворк с бойлерплейтом, и с него стартовать - то выходит не плохо. Например, описываешь OpenAPI файлик, он генерирует модели, и хендлеры. ORM накидывает методы на эти модели. Далее, ты с того же файлика генерируешь клиент (хоть на TypeScript с типизацией), который знает куда ходить и что прийдет в ответе. Единственное, что доставляет боль в моем случае - это верстка.

django+rest и все тоже самое за 5 минут запуска проекта.

Sly32
На сайте с 29.03.2012
Offline
244
#17
Aisamiery:
Сейчас вшить Vue.js в любой сайт ровно точно так же по действиям как и вшить jquery

У нас фронт именно на Vue

Aisamiery:
У нас на битрикс нагрузка 300-400 rps в акции на интернет магазине и мы не грустим в цел

У нас другая специфика - пользователь сидит на сайте и выполняет кучу действий, естественно что все раскидано по микросервисам, все скейлится, сейчас даже под базы выделяем разные сервера, а у нас и монга и мускля используются, каждая уже давно за 100 гигов. При этом прогресс ученика отправляется в еще несколько сервисов, где он рейтингуется, например. Но я не девопс, во всю кухню не лезу. Моя задача облегчить, например запросы, что бы не пропали - загнать их в очередь и тд

D
На сайте с 18.12.2015
Offline
151
#18
Aisamiery:
Асинхронные вызовы как раз с блокирующими операциями не используют, прикольно асихронный поток заблокировать - прям гениальное решения. Вы наверное больше имели ввиду многопоточность, когда на блокирующую операцию можно породить новый поток, который свободно может висеть под блокирующей операцией не блокируя основной?

Как раз с блокирующими операциями асинхронные вызовы и используют, чтобы планировщик положил задачу в пул и мультиплексировал по тредам эти задачи, когда какая-то из них будет готова по IO. У рантайма есть точки переключения контекста, которые проставляются в сисколах, сетевых вызовах и прочих функциях, где потенциально эффективная работа может быть выполнена, пока мы ждем какого-то ответа от сети или диска. И шо такое асинхронный поток? Есть userspace thread, есть kernel thread, и есть cpu thread. О каком речь-то?

Aisamiery:
Только это не подход асинхронного программирования. А в питоне я не знаю как сейчас, но раньше были некоторые проблемы с многопоточностью, для таких вещей уж лучше Erlang и на его машине построенные (elixir например) или тот же rust, но уж точно не питон.

На самом деле вы путаете теплое с мягким. Асинхронность - это свойство кода. Вы пишите асинхронный код, он теоретически может выполняться параллельно, а может и не выполнятся, если ядро одно. Другими словами, написав асинхронный код, это не гарантирует его параллельное выполнение, но при соблюдении некоторых условий (количество ядер > 1 и наличие рантайма) вы получаете параллелизм. Делая асинхронный вызов, не всегда создается гринтред (или корутина). Параллелизм - это свойство программы выполнятся параллельно, как бы тупо это не звучало. На счет Rust, там стабилизировали только недавно async/await, в остальном все так и используют токио, который взял концепцию планировщика с Go (work-stealing + work-sharing). Как пример асинхронного языка, Rust вообще тут не к месту. Тот же Erlang или Scala с его моделью акторов, или Go, Closure с моделью СSP - да, а Rust - пока что нет.

S
На сайте с 30.09.2016
Offline
469
#19
danforth:
Rust вообще тут не к месту. Тот же Erlang или Scala с его моделью акторов, или Go, Closure с моделью СSP - да, а Rust - пока что нет.

Нет. Go и прочая хрень тут тоже не к месту. Потому что тема называется "Django Unchained - поговорим".

Это как в курилке кое-кто любит любую тему сводить к "педресне". Так и здесь, ТС захотел поговорить про Джанго – а ему всякую чушь втирают.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
Sly32
На сайте с 29.03.2012
Offline
244
#20

Ну хоть последнее и не про Джангу, было полезно почитать про Руст го и проч. У Питона есть GIL и от него никак не откажутся. Соответственно всегда только один тред. Так что асинхронность актуальна очень.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий