ASYNCIO НА ПРАКТИЧЕСКОМ ПРИМЕРЕ

  Рет қаралды 26,453

luchanos

luchanos

3 жыл бұрын

Привет! Показываю на пальцах, в чём крутость асинхронного кода на Python и показываю, как с помощью него эффективно взаимодействовать с БД.
Поддержать:
/ luchanos
/ @luchanos
#ityoutubers #ityoutubersru

Пікірлер: 82
@alex_kird
@alex_kird Ай бұрын
Очень сильно понравилось, спасибо
@ChrisNasredin
@ChrisNasredin 8 ай бұрын
Спасибо, на этапе изучения асинхронности, которая сама по себе является очень сложно для понимания темой, вот такие прикладные ролики с примерами использования просто бесценны
@HEKPACOFF
@HEKPACOFF Жыл бұрын
Очень доходчиво! Благодарю за труд!
@ivan_inanych
@ivan_inanych Жыл бұрын
сколько твоих видосов не смотрю, каждый раз понимаю, что очень доступно объясняешь, респект
@supreltd
@supreltd 10 ай бұрын
Кайфанул! Спустя 1,5 года разработки не расторопных сервисов, наконец то добрался до асинхрона. Спасибо!
@PlanSK
@PlanSK Жыл бұрын
Спасибо за познавательный материал без воды👍
@Ratmirsh
@Ratmirsh 2 ай бұрын
подписан на тебя где-то год, но когда нахожу такие старые видео у тебя - респект к каналу все больше растет)
@BestCrafting1
@BestCrafting1 Жыл бұрын
отличный туториал,спасибо автор 👍
@99phenomenon
@99phenomenon Жыл бұрын
Спасибо за труд! Постепенно вхожу в сферу!)
@dizoner2610
@dizoner2610 Жыл бұрын
Парень, спасибо большое ! Очень круто объяснил!
@rtyhujrtyhfjfghjgfj
@rtyhujrtyhfjfghjgfj Жыл бұрын
Круто! До этого плохо понимал как работает asyncio, но теперь все понятно
@letsplaybi
@letsplaybi 7 ай бұрын
Спасибо большое! очень доходчиво! а боялась, что не осилю асинхронность)
@vanker_189
@vanker_189 Жыл бұрын
Большое спасибо за видеоурок
@EvgeniyYatsenko
@EvgeniyYatsenko 7 ай бұрын
отличный материал - спасибо!
@ivangordiychuk5510
@ivangordiychuk5510 Жыл бұрын
Спасибо! Очень помогло!
@vyacheslavm7844
@vyacheslavm7844 3 жыл бұрын
Асинхронка крутая тема👍 ждём новых выпусков про неё)
@denissavast
@denissavast 2 жыл бұрын
благодарю за отличную работу !
@luchanos
@luchanos 2 жыл бұрын
спасибо что смотрите!
@olhap.1414
@olhap.1414 Жыл бұрын
дякую! змістовний приклад!
@user-qe3nq4tw8i
@user-qe3nq4tw8i 2 жыл бұрын
Полезная тема! Надо глубже.
@luchanos
@luchanos 2 жыл бұрын
спасибо! сделаем)
@anim5812
@anim5812 2 жыл бұрын
Спасибо, было очень познавательно
@luchanos
@luchanos 2 жыл бұрын
благодарю!
@valeriyemelyanov9090
@valeriyemelyanov9090 6 ай бұрын
Спасибо!!! Интересно, полезно, и вроде как вполне "взрослый" подход
@andrey_1364
@andrey_1364 Жыл бұрын
Пересмотрел и спустя полгода понял что к чему)))
@user-qv4ub9se1b
@user-qv4ub9se1b 8 ай бұрын
отличное видео. красавец
@gryu7214
@gryu7214 2 жыл бұрын
Спасибо! Понятно
@user-hq7bv6sw8t
@user-hq7bv6sw8t 4 ай бұрын
Когда нужен был create table, а pyspark умеет только dml , нашел это изделие И получается, отправляю в базу один ddl запрос через асинхронную функцию, предназначенную для параллельной работы тьмы запросов Профит
@romanbush5164
@romanbush5164 2 жыл бұрын
Круто спасибо
@luchanos
@luchanos 2 жыл бұрын
И вам)
@avazart614
@avazart614 2 жыл бұрын
Лайк! (по рекомендачии от канала джангоскул)
@andreykalugin8075
@andreykalugin8075 2 жыл бұрын
Отлично! Лайк и подписка!
@luchanos
@luchanos 2 жыл бұрын
спасибо! постараюсь радовать контентом!
@Nick_Libman
@Nick_Libman 9 ай бұрын
Хорошее видео) Есть только один вопрос - можно ли в chunk передать сразу все 10000 запросов? Как проверить это ограничение и что вообще будет?
@Spk111
@Spk111 2 жыл бұрын
Да топчик
@luchanos
@luchanos 2 жыл бұрын
спасибо!
@dmytroznak8843
@dmytroznak8843 2 жыл бұрын
👍🏻
@PavelMostovoy
@PavelMostovoy 2 жыл бұрын
Можно и блокирующий код запускать, для этого используется конструкция loop.run_in_executor(). Но вот написать не блокирующий код не используя await asyncio.sleep() и уже готовые библиотеки которые это поддерживают, это уже интересно.
@googleadmin4749
@googleadmin4749 2 жыл бұрын
Очень круто, было бы прикольно осознать как запускать в фоне процесс без ожидания
@luchanos
@luchanos 2 жыл бұрын
процесс как python-процесс? не могли бы вы конкретизировать?
@romanbush5164
@romanbush5164 10 ай бұрын
Офигеть год прошел)
@cs_dequeue
@cs_dequeue 2 жыл бұрын
Супер видео! Спасибо! Кстати, можно убрать искусственно тормозящий asyncio.sleep в конце и будет еще быстрее)
@luchanos
@luchanos 2 жыл бұрын
да! но это спецом было сделано)
@user-eb3lz3ox8u
@user-eb3lz3ox8u 2 жыл бұрын
4:39 наша лупа))
@luchanos
@luchanos 2 жыл бұрын
Ага и пупа)
@johnylemon473
@johnylemon473 2 жыл бұрын
спасиюо за видео. сделай пожалуйста большой ,углубленный туториал реальным проектом по этой теме.
@luchanos
@luchanos 2 жыл бұрын
уже в разработке!) ждите анонс!)
@orkhangasanov
@orkhangasanov 2 ай бұрын
А если не использовать асинхронную библиотеку для постгри и пытаться стандартной библиотекой psycopg2 выполнять запросы в функциях-корутинах завернутых в async + await asyncio.sleep(0.1). Не будет также по скорости? Вопрос в целом, почему нельзя использовать синхронную библиотеку для записи БД или чего-то ещё, если мы всё равно можем передать для async def xxx(). awaitable объект.
@antonkryukov7134
@antonkryukov7134 2 жыл бұрын
В конце sleep забыл удалить
@Ybuotue
@Ybuotue Жыл бұрын
Не забыл, а оставил для имитации задержки сети, подключается же к локалхосту.
@hopelesssuprem1867
@hopelesssuprem1867 2 жыл бұрын
такой вопрос: в каком случае лучше использовать асинхронность, а в каком многопоточность, если обе штуки нужны для задач ввода-вывода?
@hopelesssuprem1867
@hopelesssuprem1867 Жыл бұрын
@Ivan Petrov спасибо за развернутый ответ)
@user-gy2ji3ur4z
@user-gy2ji3ur4z 2 жыл бұрын
Еще бы как-нибудь создать код анализирующий нагрузку на БД и автоматом меняющий чанки на оптимальное значение. По теме - палец вверх
@luchanos
@luchanos 2 жыл бұрын
обычно такие вещи админы смотрят глазами. существует такой параметр, он называется утилизация. вот надо чтобы он + время ответа базы не превышало допустимые значения) постараюсь раскрыть тему)
@radikmasagutov9716
@radikmasagutov9716 2 жыл бұрын
Интересно. Спасибо. НО БОЛЬШАЯ ПРОСЬБА не бить так сильно по клавишам!!! В наушниках очень не приятно слушать.
@luchanos
@luchanos 2 жыл бұрын
спасибо! я уже купил оборудование - будет ремастер старых роликов)
@user-vo2ci9gb1x
@user-vo2ci9gb1x 3 жыл бұрын
странно получается) до 10 инсерта как-то в разнобой ID и cnt, потом нормально create table test (id serial not null, val text) QUERY = """INSERT INTO test (val) VALUES ($1)""" await db_pool.fetch(QUERY, 'test insert ' + str(cnt)) ID. VAL 1 test insert 2 2 test insert 4 3 test insert 1 4 test insert 7 5 test insert 3 6 test insert 6 7 test insert 8 8 test insert 5 9 test insert 9 10 test insert 10
@luchanos
@luchanos 2 жыл бұрын
это связано с тем, что вывод в консольку может долетать с разной скоростью от каждой таски) аналогично может получиться, что сначала в консольке будет Exception, а потом все остальное)
@ivanowdenis
@ivanowdenis 2 жыл бұрын
Классное видео, только "or pended == 10_000" никогда не исполнится(т.к. 9_999 будет последним в range )
@luchanos
@luchanos 2 жыл бұрын
хаха)) действительно)) спасибо!)
@avazart614
@avazart614 2 жыл бұрын
@@luchanos А сколько по умолчанию в пуле воркеров ? Можно его менять ... стоило упомянуть
@olzh6285
@olzh6285 Жыл бұрын
pended и не нужен, у него цикл х из 10_000, мог бы использовать х, что бы не добавлять лишние действия. Но это не важно, главное знания про асинхронность он донес
@alexsur7315
@alexsur7315 2 жыл бұрын
Интересно а если неизвестно заранее количество запросов? Получается если поставить длину 1, то он будет ждать пока не наберётся 200 и пользователю ничего не вернётся?
@luchanos
@luchanos 2 жыл бұрын
абсолютно верно!) тут надо понимать какие риски мы несём и как с этим бороться. в ремейке этого ролика я покажу расширенный вариант)
@alexsur7315
@alexsur7315 2 жыл бұрын
@@luchanos спасибо. А когда ролик на этот счёт будет выпущен?
@luchanos
@luchanos 2 жыл бұрын
@@alexsur7315 я думаю что это всё будет в рамках проекта, по срокам точно не скажу сейчас. идея в том, что тот материал, который я тут осветил прикрутить на что-то "боевое". я уже купил домен и там есть сервер на котором будет web-app, которое мы будем покрывать всеми такими вот прелестями)
@KereellOlorin
@KereellOlorin Жыл бұрын
Спешиал сенкс за отсылку к PEP 515 - Underscores in Numeric Literals. Забыл шо так можно.
@PizdaRusni2023
@PizdaRusni2023 2 жыл бұрын
tasks в середину цикла. Почему не показать пример с батч генератором.
@luchanos
@luchanos 2 жыл бұрын
хороший кейс, спасибо! покажу в переработанном материале)
@RrRr-vf3gt
@RrRr-vf3gt 2 жыл бұрын
Здравствуйте. ищу решение. У меня такая проблема. Основной код асинхронный, и при определённом выполнении условия должен создаваться новый тред/поток, который должен жить уже дальше своей жизнью. Но к сожалению выходит так, что создаётся новый потом внутри асинхронке и он стопорит всё, пока не закончит свою работу. Уже месяца 2 ищу как мне создать новый поток, который бы зарождался в асинхронке и жил своей жизнью. Может у кого есть идеи? ПС. Пожалуйста не пишите, мол зачем тебе, сделай асинхронно вообще всё. Это не решение моей задачи. Мне нужный асинхронный парсинг в процессе работы которого, выполняется условие и стартует грубо говоря отдельная программа. И мне нужно, что бы это был именно новый поток. Ни и что бы совсем усложнить задачу, количество будущих потоков неизвестно (динамическое). Кто знает решение такой задачи. Отзовитесь ))
@maxvakker7719
@maxvakker7719 8 ай бұрын
Уже неактуально (
@PavelNebo
@PavelNebo 27 күн бұрын
забыл убрать await sleep(.1)
@vilesovds
@vilesovds 3 жыл бұрын
Интересно, а зачем create_pool асинхронный?
@luchanos
@luchanos 3 жыл бұрын
Потому что подключение к базе тоже занимает время и может происходить с задержками
@user-hn5bi3nw9y
@user-hn5bi3nw9y Жыл бұрын
+++
@donfedor007
@donfedor007 2 жыл бұрын
Я экспериментировал с asyncio и библиотекой Jira. Не хотят они дружить(( У Вас нет не чего в этой теме?
@luchanos
@luchanos 2 жыл бұрын
Никогда не слышал про библиотеку Jira, надо будет поугглить
@klayd4009
@klayd4009 4 ай бұрын
Бесполезное видео. Вы не даете конкретики во времени выполнения. Много всяких излишеств. Раз уж вы показываете gather, то следовало бы использовать comprehension, заполняемый корутинами.
@luchanos
@luchanos 4 ай бұрын
Сделайте видео лучше, я приду и оценю с удовольствием))
@VakaramGolang
@VakaramGolang Жыл бұрын
ахиреть как быстро стало работать. столкнулся с проблемой асинхронности с ТГ ботом на aiogram не хочет работать просто так с sqlite а мне она идеально подходит +-. Ну и шаг назад два вперёд , сейчас буду повторять код.
@MrSerg00000
@MrSerg00000 Жыл бұрын
круто нихера не понял где можно нормльно разобрать асинх у меня надо гет пост в панду сложить прилетит джсон после псот проверил методом раскидать по ядрам ну бустрее но ядра занимать не хочется # df['jsonreport'] = df.newbody.parallel_apply(self.apply_func) типо того на 4 быстрее чем просто апплай да ) но вот про асинхр пытаюсь понять как действовать ничига не понимаю(
Основы Asyncio
53:25
Python Russian
Рет қаралды 9 М.
The magical amulet of the cross! #clown #小丑 #shorts
00:54
好人小丑
Рет қаралды 19 МЛН
didn't want to let me in #tiktok
00:20
Анастасия Тарасова
Рет қаралды 9 МЛН
How did CatNap end up in Luca cartoon?🙀
00:16
LOL
Рет қаралды 6 МЛН
Asyncio и асинхронное программирование | Python 3, Питон 3
41:01
Андрей Иванов | Python
Рет қаралды 37 М.
Асинхронщина в Python
25:32
MoscowPython
Рет қаралды 14 М.
Полиморфизм на практике
10:42
ExtremeCode
Рет қаралды 177 М.
AsyncIO, await, and async - Concurrency in Python
9:12
Socratica
Рет қаралды 67 М.
асинхронность python 3 примеры | Урок 23
37:54
Django School | Омельченко Михаил
Рет қаралды 15 М.
Python Asyncio, Requests, Aiohttp | Make faster API Calls
17:56
Patrick Collins
Рет қаралды 121 М.
The magical amulet of the cross! #clown #小丑 #shorts
00:54
好人小丑
Рет қаралды 19 МЛН