Особенности asyncio.wait_for() в асинхронном Python. Как работает таймаут для корутины

  Рет қаралды 18,354

Диджитализируй!

Диджитализируй!

Күн бұрын

Конструкция asyncio.wait_for() используется для установления таймаута на выполнение асинхронной функции в Python. Но всё работает не так однозначно, давайте, как всегда, посмотрим глубже:)
Мой курс «Хардкорная веб-разработка» - course.to.digital
Книжный клуб Ботаним!, где мы читаем хорошие ИТ-книги: botanim.to.digital/
Telegram: t0digital.t.me
asyncio streams - docs.python.org/3/library/asy...
asyncio.wait_for - docs.python.org/3/library/asy...
0:00 Просмотр исходного кода
6:08 Постановка вопроса про asyncio.wait_for
6:41 Изучаем вопрос с исходниками StreamReader
13:49 Разобрались!
15:36 Демонстрация в упрощённом сценарии
/****************** about ******************/
Меня зовут Алексей Голобурдин, я программирую с 2004 года и на этом канале делюсь своим опытом. Я основатель и руководитель компаний:
- Диджитализируй digitalize.team, разрабатываем сложные IT системы для бизнеса;
- Salesbeat salesbeat.pro, комплексный модуль доставки для интернет магазинов.
Telegram канал - t.me/t0digital
ВК - digitalize.team
RuTube - rutube.ru/channel/24802975/ab...
Дзен - dzen.ru/id/6235d32cb64df01e6e...

Пікірлер: 262
@MadoxXx
@MadoxXx 2 жыл бұрын
Было бы круто ещё узнать про асинхронность, как вариант можно рассказать про подобные вещи "Semaphore"
@igorfinkovsky2714
@igorfinkovsky2714 2 жыл бұрын
Код гляньте код семафора, там внутри лок, а внутри лока фьюча. все довольно просто)
@user-13520sdf
@user-13520sdf 2 жыл бұрын
Семафор больше к многопоточности относится, а не к асинхронности и очень редко применяется на практике
@warpmaster
@warpmaster 2 жыл бұрын
Обязательно делай материал про асинхронность, если появится желание и возможность ; ) Очень жду, буду смотреть с большим удовольствием.
@3agoskin
@3agoskin 2 жыл бұрын
Алексей, да, про асинхронность было бы очень интересно узнать подробнее! Спасибо за видео!
@random-history
@random-history 2 жыл бұрын
Про асинхронность, конечно же, нужен выпуск. Хорошо бы упомянуть при этом aiohttp как альтернативу традиционным серверам.
@Drevov
@Drevov 2 жыл бұрын
разбери пожалуйста правильную работу pyqt с asyncio, когда нужно выполнять асинхронный задачи в отдельном потоке или как pyqt выполнить в полностью асинхронном подходе (qasync или еще что-то), буду очень благодарен!
@stan7657
@stan7657 2 жыл бұрын
поддерживаю выпуск про асинхронность в питоне
@xBAMIIuPx
@xBAMIIuPx 2 жыл бұрын
Я бы хотел посмотреть ваш ролик про асинхронность, возможно и не один. У вас очень хорошо получается рассказывать сложные вещи простым языком.
@t0digital
@t0digital 2 жыл бұрын
ЗЫ. Чтобы проблемный кейс из видео отработал можно (просто для понимания) добавить куда-то в начало метода StreamReader.read (в файле asyncio/streams.py) : import asyncio await asyncio.sleep(0.1) это на 0.1 секунду замедлит выполнение reader.read(), но позволит wait_for прибить корутину по таймауту. Почему так сработает? Потому что в asyncio.sleep у нас эмулируется асинхронный ввод вывод и в момент ожидания этого ввода-вывода контекст передаётся в event loop и потому wait_for получает возможность отслеживать таймаут и прибивать корутину. Конечно, править таким образом исходники Python не надо:) Повторюсь, это просто для понимания вопроса.
@andreyduke_kz4882
@andreyduke_kz4882 2 жыл бұрын
По моему будет достаточно даже await asyncio.sleep(0). Это переключит контекст и таймаут свершится
@t0digital
@t0digital 2 жыл бұрын
@@andreyduke_kz4882 о, может быть, да!
@TheMRrenald
@TheMRrenald 2 жыл бұрын
Тут цикл while true блокирует луп и он весь занять отработкой этого цикла. yield в него можно добавить
@objgrb
@objgrb 2 жыл бұрын
@@TheMRrenald добавив yield получим async generator, а это уже специфично другая штука. Да и yield без значения в python 3.5 и выше запретили(
@TheMRrenald
@TheMRrenald 2 жыл бұрын
@@objgrb согласен. Но суть остается - луп блокируется циклом. В видео бы раскрыть этот смысл. Как основы асинхронности
@vitalyvlasenko5495
@vitalyvlasenko5495 2 жыл бұрын
Балуете Вы нас. Второй годный ролик за неделю! Спасибо!
@vitalyvlasenko5495
@vitalyvlasenko5495 2 жыл бұрын
Хотим, конечно, asyncio! Просим! И про потоки/процессы тоже хотелось бы. Мне как-то нужно было много картинок скачать с одного сайта, недоступного в РФ. Пришлось использовать много разных прокси (там ограничение на скачивание с одного IP-адреса). Пытался aiohttp прикрутить. Плюнул, сделал быстро и кроваво bash-скриптом с "&". ООО "Костыли и велосипеды". Программируем, как умеем.
@MartinEden-ps6ld
@MartinEden-ps6ld 2 жыл бұрын
очень интересно про все что связано в асинхронностью в питоне)
@MadMike93
@MadMike93 2 жыл бұрын
Даёшь асинхронщину!
@quasar-lv6pp
@quasar-lv6pp 2 жыл бұрын
Алексей, как всегда толково и профессионально! Материал про асинхронность от тебя просто необходим!
@user-td4fr2rp8w
@user-td4fr2rp8w 2 жыл бұрын
Да, очень интересно про асинхронщину, особенно в твоём изложении. Спасибо за доступное объяснение.
@joma0305
@joma0305 2 жыл бұрын
Спасибо за видео разбор. Все четко и доступно. Даешь больше про асинхронность! 👍
@MAKS19961204
@MAKS19961204 2 жыл бұрын
Про асинхронность однозначно хотим) Особенно про то, какие бест практис приемы по работе с очередями и их обратку через воркеры в виде тасков.
@makaronronron
@makaronronron 2 жыл бұрын
Очень круто и интересно) Спасибо за видео
@user-lz3ez3nn4j
@user-lz3ez3nn4j 2 жыл бұрын
Спасибо за каждое видео, как всегда на высшем уровне, четко, доступно, профессионально!
@vladimirushakov2626
@vladimirushakov2626 2 жыл бұрын
Ждем асинхронщину, годный контент! Лайк однозначно!
@andrey4641
@andrey4641 2 жыл бұрын
Спасибо за полезный контент! Про асинхронность было бы очень интересно послушать, можно ещё накинуть про асинхронные вэб-фреймворки и использование асинхронных вьюх в джанге. Да любые реальные примеры будут полезны 👍
@user-wg2yh1rw2t
@user-wg2yh1rw2t 2 жыл бұрын
Будьте добры лекцию по асинхронности.
@fedor_ado
@fedor_ado 2 жыл бұрын
Спасибо. Очень ждём про асинхронность. Прям надо! ) 👍💪
@user-oi1zl6de8i
@user-oi1zl6de8i 2 жыл бұрын
Спасибо. Важный момент прояснили.
@sashasashovic91
@sashasashovic91 2 жыл бұрын
Классно объясняете, благодарю за полезную информацию.
@Dastan1910
@Dastan1910 2 жыл бұрын
Спасибо за видео, да, хочется подробнее про асинхронность, круто объясняете!
@leonidzimin2419
@leonidzimin2419 2 жыл бұрын
Спасибо большущее! + ЗА видео про асинхронный python.
@user-vh4vg2pb2p
@user-vh4vg2pb2p 2 жыл бұрын
Отличный кейс! Спасибо! Конечно же, ждём про асинхронность.
@StuBz211
@StuBz211 2 жыл бұрын
Было полезно, спасибо!
@PornoSlonik1
@PornoSlonik1 2 жыл бұрын
Очень будем ждать материал про асинхронный пайтон, было бы крайне интересно послушать про это именно от вас !
@SashaNikishov
@SashaNikishov 2 жыл бұрын
Спасибо. Буду ждать большой материал по asyncio.
@klalyananik
@klalyananik 2 жыл бұрын
Это было полезно, пасиба! Будет оч круто, если сделаешь видео про асинхронность. Жду и надеюсь :)
@user-gq8yw1mm6e
@user-gq8yw1mm6e 2 жыл бұрын
Спасибо за разбор! Очень интересно и конечно снимите про asyncio!!!!!
@gapchannelAi
@gapchannelAi 2 жыл бұрын
Как всегда на высшем уровне
@olegfedoruk9175
@olegfedoruk9175 Жыл бұрын
Спасибо за разбор! Информация по асинхронному python супер актуальна, будет круто, если запишешь ещё материалов по этой теме!
@andreya.gorbunov7458
@andreya.gorbunov7458 2 жыл бұрын
О спасибо. Как раз сегодня этот вопрос изучать начал.
@4687778
@4687778 2 жыл бұрын
Спасибо большое за видео, очень годный и полезный контент, было бы супер ещё видео про async.
@mikisor4372
@mikisor4372 2 жыл бұрын
Спасибо! Интересно узнать про асинхронность!
@user-il2gx9ju7l
@user-il2gx9ju7l 2 жыл бұрын
Да, было круто послушать от тебя про асинхронность)
@sfm6295
@sfm6295 2 жыл бұрын
Очень нужен полноценный ролик по asyncio в python!
@user-to3xq3wv3e
@user-to3xq3wv3e 2 жыл бұрын
Конечно хотим!!!
@Dobrodei08
@Dobrodei08 2 жыл бұрын
Очень жду материал по асинхронности! Спасибо!
@andreymartynov3958
@andreymartynov3958 Жыл бұрын
Спасибо! Именно неявные для начинающих варианты работы библиотек знать полезно! А тут - просто новый пласт реальности =) Как обычно - респект Алексей!
@MrDen4uk
@MrDen4uk 2 жыл бұрын
Алексей очень полезный материал и отличное изложение!По асинхронке очень бы интересно было послушать
@ok_kir4534
@ok_kir4534 2 жыл бұрын
Надеюсь будет возможность выпустить более подробное видео по асинхронности 😃
@anton.glukhenko
@anton.glukhenko 2 жыл бұрын
Хочу увидеть больше материала по асинхронности, очень хорошая подача материала
@SoulPervert
@SoulPervert 2 жыл бұрын
Да, очень хотим материал про асинхронность)
@romanrrv
@romanrrv 2 жыл бұрын
Отлично! Прекрасный ролик, спасибо. +1 к роликам по асинхронности
@user-rq5bf2gn3k
@user-rq5bf2gn3k 2 жыл бұрын
Да, с удовольствием посмотрел бы ролик про асинхронность
@pavelbelov8019
@pavelbelov8019 2 жыл бұрын
Да, пожалуйста побольше материала про асинхронность
@TheMonth1996
@TheMonth1996 2 жыл бұрын
обязательно ждем отдельного видео про асинхронность
@domochevsky4703
@domochevsky4703 2 жыл бұрын
Спасибо за видос. Хотелось бы уроков по асинкио:)
@evgeny1775
@evgeny1775 2 жыл бұрын
Оч круто было бы послушать подробнее про асинхронность:) Видос на высшем уровне, спасибо!
@alexkravets1802
@alexkravets1802 2 жыл бұрын
Привет. Очень нужен материал по асинхронности, буду ждать. Спасибо за интересный и познавательный материал.
@user-dk1lz5hx6x
@user-dk1lz5hx6x 2 жыл бұрын
Асинхронность True, + за видос про асинхронность Асинхронные INSERT и SELECT в db.
@rkozom
@rkozom 2 жыл бұрын
Спасибо большое! Очень хочется материал по асинхронности.
@noveluke2260
@noveluke2260 2 жыл бұрын
Спасибо за видео, ждем выпуск про асинхронность в питоне
@SergeySlesarenko
@SergeySlesarenko 2 жыл бұрын
Спасибо! очень полезно! очень бы хотелось цикл видео про asyncio
@boltwest
@boltwest 2 жыл бұрын
Спасибо огромное за видос! И очень хотелось бы видос про осинхронность.
@slikeiv4477
@slikeiv4477 2 жыл бұрын
Очень жду лекцию по асинхронности в python!)) Сам познакомился с асинхроншиной в node.js ещё во времена callback hell, потом правда добавили async- await, откуда она перекочивала в другие языки. А вот в питоне самому приходилось использовать всего пару раз, и то код дёргал со стекоферфлова.
@Uni-Coder
@Uni-Coder 2 жыл бұрын
Насколько мне известно, синтаксис async/await появился в .NET ещё в 2011-12 гг. Stephen Cleary - один из лучших специалистов в этой области, по крайней мере, в .NET. В JS этот синтаксис добавили не ранее чем в 2015.
@user-so4qj3xo9s
@user-so4qj3xo9s 2 жыл бұрын
Было бы очень интересно!
@Naikshy
@Naikshy 2 жыл бұрын
Спасибо за видео, на пайтоне сейчас не пишу но про асинхронность послушать было интересно
@Bupyc2006
@Bupyc2006 2 жыл бұрын
Ну ничёси, конечно хотим ! Очень крутая штука
@sergeydmitryenko3314
@sergeydmitryenko3314 2 жыл бұрын
Было бы круто про асинхронность)))) Спасибо!
@user-zk3uo3ti6f
@user-zk3uo3ti6f 2 жыл бұрын
Я джва года ждал видео про асинхронность в python на пальцах)
@hopelesssuprem1867
@hopelesssuprem1867 2 жыл бұрын
Спасибо за видео, как раз счас изучаю эту тему)
@t0digital
@t0digital 2 жыл бұрын
Отлично! Асинхронность must have для веба
@hopelesssuprem1867
@hopelesssuprem1867 2 жыл бұрын
@@t0digital правда, я изучаю ml, но там это тоже нужно))
@idensas
@idensas 2 жыл бұрын
Лучший!
@user-sp1lt6uy5f
@user-sp1lt6uy5f 2 жыл бұрын
Да информация нужна!! было бы очень круто !
@sergeyfedor45
@sergeyfedor45 2 жыл бұрын
Ждем материал по asyncio !!!!
@hronoz40
@hronoz40 2 жыл бұрын
Спасибо вам большое. Хотелось бы про асинхронность больше.
@lellel5521
@lellel5521 2 жыл бұрын
Спасибо за видео, очень нужен асинхронный питон, просим☺
@aleks007rus
@aleks007rus 2 жыл бұрын
Полезная информация
@Gr3gnov
@Gr3gnov 2 жыл бұрын
Конечно хотим про асинхронность!
@diplspec5758
@diplspec5758 2 жыл бұрын
я за выпуск про асинхронность. спасибо!
@WerWolfEee
@WerWolfEee 2 жыл бұрын
Конечно интересно, больше асинхронности богу асинхронности! :)
@tvoyamuha7087
@tvoyamuha7087 2 жыл бұрын
Про асинхронность надо видео - бомби!
@user-ci8yo4yr7s
@user-ci8yo4yr7s 2 жыл бұрын
+1 за видео по асинхронности
@soldatov_ss
@soldatov_ss 2 жыл бұрын
Конечно хотим!) На рунете мало достойной информации по этой теме Интересно как там под капотом у асинкио, и треды тоже интерессны
@romaryizhiy5747
@romaryizhiy5747 2 жыл бұрын
+ за ролик про асинхронность
@totalchest9445
@totalchest9445 2 жыл бұрын
Ждем asyncio
@greatsol3822
@greatsol3822 2 жыл бұрын
Очень жду подробное видео про асинхронность в питоне от Вас
@MrLotrus
@MrLotrus 2 жыл бұрын
Очень хочу материал по асинхронному пайтону. Причём крайне желательно с описанием именно работы event loop, события, что такое awaitable и т.д.
@NikTigerBill
@NikTigerBill 2 жыл бұрын
Алексей, ждем доп. материал!
@vitaliingermany2505
@vitaliingermany2505 2 жыл бұрын
Were very nice this topic
@user-yd8gx5no9u
@user-yd8gx5no9u 2 жыл бұрын
Да, конечно! Ассинхроннсоть и параллелизм всегда интересны!
@user-wo6sg4ff2e
@user-wo6sg4ff2e 2 жыл бұрын
Очень хочется такое видео про асинхронность!!
@user-re6vy7uo5c
@user-re6vy7uo5c 2 жыл бұрын
Да, хотелось бы подробно про асинхронность
@velnbur-live3399
@velnbur-live3399 2 жыл бұрын
Хотим!
@andrii.porokhnavets
@andrii.porokhnavets 2 жыл бұрын
Would be awesome to see video about asyncio
@rob-xs7cl
@rob-xs7cl 2 жыл бұрын
материал по асинхронному ждём❤️
@user-tq7xp6ev1y
@user-tq7xp6ev1y 2 жыл бұрын
Хотим большой материал про асинхронность, спасибо!
@plintuz
@plintuz 2 жыл бұрын
Спасибо за видео! Полезный материал. Да по асинхронности видео актуальное будет, чтоб знать как подобраться к ней, заранее спасибо!)
@valarg5756
@valarg5756 2 жыл бұрын
Было бы супер, если бы сделал видео по асинхронной работе. С удовольствием посмотрел бы. Лайк
@vrameew
@vrameew 2 жыл бұрын
Да хотелось бы больше информации по теме одновременного использования асинхронности и многопоточности
@user-gp4hm6ig8w
@user-gp4hm6ig8w 2 жыл бұрын
Было бы неплохо поднять тему юнит тестов , так как на просторах Ютуба очень поверхностные примеры с каким то калькулятором или проверкой строк . Хотелось бы увидеть что-то углубленное и продвинутое .
@user-bt9xg2ii7l
@user-bt9xg2ii7l 2 жыл бұрын
Тут клссные уроки , где пишутся тесты во время создания приложения Посмотрите все уроки из этой серии kzfaq.info/get/bejne/fNeli7Fh2cWvkok.html
@joly3122
@joly3122 2 жыл бұрын
Пиши много тестов, которые проверяют что-то конкретное. Например, отдельно функция теста регистрации (при валидных данных), отдельная (при инвалидных) и т.п.
@user-gp4hm6ig8w
@user-gp4hm6ig8w 2 жыл бұрын
@@user-bt9xg2ii7l спасибо , обязательно посмотрю
@AndreyLikhobabin
@AndreyLikhobabin 2 жыл бұрын
Даёшь больше асинхронности!
@Dmitry13s
@Dmitry13s 2 жыл бұрын
Было бы здорово узнать поподробнее про ассинхронность!
@warlordoptimist5886
@warlordoptimist5886 2 жыл бұрын
Спасибо за видео! Асинхронность в питоне настолько же крутая насколько и непонятная. Запиши видео на эту тему, пожалуйста. И затронь, пожалуйста, асинхронные запросы (знаю про aiohttp, но может есть способ с asyncio) и, если знаешь, другие библиотеки асинхронности для питона.
@t0digital
@t0digital 2 жыл бұрын
Для асинхронных запросов httpx возможно понравится
@warlordoptimist5886
@warlordoptimist5886 2 жыл бұрын
@@t0digital Точно, совсем забыл о его существовании, спасибо!
@vladimirblinov6419
@vladimirblinov6419 2 жыл бұрын
Да, тема асинхронности интересна.
@dmitrypronenko7604
@dmitrypronenko7604 2 жыл бұрын
Привет. Ждём большой материал по асинхронности.
@andrewushakov7545
@andrewushakov7545 2 жыл бұрын
Очень полезно, спасибо. Голосую за материал по asyncio
Всё об исключениях и работе с ними в Python
30:34
Диджитализируй!
Рет қаралды 48 М.
The Worlds Most Powerfull Batteries !
00:48
Woody & Kleiny
Рет қаралды 24 МЛН
WHY DOES SHE HAVE A REWARD? #youtubecreatorawards
00:41
Levsob
Рет қаралды 39 МЛН
Шокирующая Речь Выпускника 😳📽️@CarrolltonTexas
00:43
Глеб Рандалайнен
Рет қаралды 11 МЛН
Основы Asyncio
53:25
Python Russian
Рет қаралды 10 М.
Лекция 9. async / await (Программирование на Python)
1:39:22
Computer Science Center
Рет қаралды 54 М.
#1. Читаем исходники open source Python библиотек. Loguru!
58:19
Диджитализируй!
Рет қаралды 89 М.
Next-Level Concurrent Programming In Python With Asyncio
19:19
ArjanCodes
Рет қаралды 163 М.
#1 Что такое корутина. Важные особенности || Курс по корутинам
16:40
Android Broadcast. Все об Андроид разработке
Рет қаралды 86 М.
Asyncio in Python - Full Tutorial
24:59
Tech With Tim
Рет қаралды 43 М.
👑 Шифруем файлы и пароли аки Царь с GPG и Pass!
26:53
Диджитализируй!
Рет қаралды 70 М.
Асинхронщина в Python
25:32
MoscowPython
Рет қаралды 14 М.
The Worlds Most Powerfull Batteries !
00:48
Woody & Kleiny
Рет қаралды 24 МЛН