Pull to refresh

Comments 19

стабильно чуть быстрее, но ненамного - от 10 до 20%

И в ту же копилку цитат от автора: "[asyncpg] Всего в 2 раза лучше, чем psycopg2"

UFO just landed and posted this here

настоящего параллелизма нет ни там ни там, ввиду GIL

Настоящий параллелизм есть и там и там. На вызовах сишного libpq GIL отпускается

Например в FastApi (Starlette) при подключении вебсокета у вас есть экземпляр подключения

Вот starlette. Где он, этот экземпляр? Я вижу только send и receive, о которых я писал

UFO just landed and posted this here

Он не самодостаточный: ему нужны ещё библиотеки для работы, например, unicorn[standard]. Потому что он сам не работает с вебсокетами

Автор. При собеседовании на уровень Junior требуется знать разницу между потоками и корутинами. Ты её не понимаешь.

хорошо, что я не собеседуюсь на джуниора :)

Дело в том, что достоинства всей этой пляски с гринлетами - это совместимость с синхронным (блокирующим) кодом - которой у asyncio нет.

Отлично, нет текущего синхронного кода - wsgi не используем, всё просто.

Не знаю, всё же использовать Python для веба... Ну такое... Не для того он предназначен. Да, сделать на Django неспешную админку для внутреннего продукта вполне себе неплохая идея, но не более того. А для высокопроизводительного сервиса это всё равно, что пытаться дотюнить педальную машинку до использования на немецком автобане. И ни WSGI, ни асинхронность тут кардинально не помогут.

Казалось бы, есть успешный пример Node.JS, который смог. Но он смог в достаточно специфичном кейсе асинхронных веб серверов, главным образом благодаря удачному сочетанию для этого случая движка V8 и концепции планировщика Event Loop, реализованной через libuv. В этой связке асинхронность там была изначально, причём не простая, а фактически реализуемая для таких вещей как работа с сетью на очень низком системном уровне.

Python и его веб-фреймворки, с другой стороны, в силу своей супер универсальности не могут похвастаться ни супербыстрым интерпретатором (в котором должна быть реализована компиляция, чтобы добиться сравнимых с V8 результатов), ни низкоуровневым планировщиком для асинхронных вызовов.

Концептуально в мире Python ближе всего к Node что-то вроде uvloop. Но всё равно это полумеры.

Всё сказанное выше - ИМХО, лично давно не имел дел с веб-фреймворками на Python, может быть с тех пор там стало всё очень хорошо (но это не точно). При этом против самого по себе Python ничего не имею, в своих нишах - язык отличный.

может быть с тех пор там стало всё очень хорошо (но это не точно).

Нормально там всё. Штуковины вроде starlette вполне шустры, если делать поправку на медленность вычислений, что для проксирования запросов в БД и лёгкой логики не так важно. То есть для типового, умеренно нагруженного сервиса, этого более чем достаточно. А если уже мы упираемся в скорость python, то проще взять Go, а то и C++.

в силу своей супер универсальности

Не, мода на django-подобные монстры прошла.

мода на django-подобные монстры прошла.

Что нынче в моде?

В моде делать всё самостоятельно, потратив x3 времени и ресурсов.

Хоть starlette, хоть aiohttp. Да даже flask ещё иногда берётся в работу. Делать фреймфорк, который умеет ВСЁ никому в голову больше не приходит, к счастью.

Делать фреймфорк, который умеет ВСЁ никому в голову больше не приходит, к счастью

Но ведь django уже сделан, его делать не надо )))

Действительно, зачем при делать то, что уже есть))

На бечмарках конкретных задач зачастую проблемы в производительности заметны из-за конкретной реализации логики, архитектуры либы, а не языка.

а что лучше всего подходит для бэк в вебе по вашему мнению?

Sign up to leave a comment.

Articles