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

  Переглядів 18,192

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

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

День тому

Конструкция 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 роки тому
Алексей, да, про асинхронность было бы очень интересно узнать подробнее! Спасибо за видео!
@Drevov
@Drevov 2 роки тому
разбери пожалуйста правильную работу pyqt с asyncio, когда нужно выполнять асинхронный задачи в отдельном потоке или как pyqt выполнить в полностью асинхронном подходе (qasync или еще что-то), буду очень благодарен!
@random-history
@random-history 2 роки тому
Про асинхронность, конечно же, нужен выпуск. Хорошо бы упомянуть при этом aiohttp как альтернативу традиционным серверам.
@xBAMIIuPx
@xBAMIIuPx 2 роки тому
Я бы хотел посмотреть ваш ролик про асинхронность, возможно и не один. У вас очень хорошо получается рассказывать сложные вещи простым языком.
@stan7657
@stan7657 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 роки тому
Балуете Вы нас. Второй годный ролик за неделю! Спасибо!
@quasar-lv6pp
@quasar-lv6pp 2 роки тому
Алексей, как всегда толково и профессионально! Материал про асинхронность от тебя просто необходим!
@MartinEden-ps6ld
@MartinEden-ps6ld 2 роки тому
очень интересно про все что связано в асинхронностью в питоне)
@vitalyvlasenko5495
@vitalyvlasenko5495 2 роки тому
Хотим, конечно, asyncio! Просим! И про потоки/процессы тоже хотелось бы. Мне как-то нужно было много картинок скачать с одного сайта, недоступного в РФ. Пришлось использовать много разных прокси (там ограничение на скачивание с одного IP-адреса). Пытался aiohttp прикрутить. Плюнул, сделал быстро и кроваво bash-скриптом с "&". ООО "Костыли и велосипеды". Программируем, как умеем.
@MAKS19961204
@MAKS19961204 2 роки тому
Про асинхронность однозначно хотим) Особенно про то, какие бест практис приемы по работе с очередями и их обратку через воркеры в виде тасков.
@user-td4fr2rp8w
@user-td4fr2rp8w 2 роки тому
Да, очень интересно про асинхронщину, особенно в твоём изложении. Спасибо за доступное объяснение.
@MadMike93
@MadMike93 2 роки тому
Даёшь асинхронщину!
@joma0305
@joma0305 2 роки тому
Спасибо за видео разбор. Все четко и доступно. Даешь больше про асинхронность! 👍
@andrey4641
@andrey4641 2 роки тому
Спасибо за полезный контент! Про асинхронность было бы очень интересно послушать, можно ещё накинуть про асинхронные вэб-фреймворки и использование асинхронных вьюх в джанге. Да любые реальные примеры будут полезны 👍
@user-lz3ez3nn4j
@user-lz3ez3nn4j 2 роки тому
Спасибо за каждое видео, как всегда на высшем уровне, четко, доступно, профессионально!
@klalyananik
@klalyananik 2 роки тому
Это было полезно, пасиба! Будет оч круто, если сделаешь видео про асинхронность. Жду и надеюсь :)
@andreymartynov3958
@andreymartynov3958 Рік тому
Спасибо! Именно неявные для начинающих варианты работы библиотек знать полезно! А тут - просто новый пласт реальности =) Как обычно - респект Алексей!
@Dastan1910
@Dastan1910 2 роки тому
Спасибо за видео, да, хочется подробнее про асинхронность, круто объясняете!
@olegfedoruk9175
@olegfedoruk9175 Рік тому
Спасибо за разбор! Информация по асинхронному python супер актуальна, будет круто, если запишешь ещё материалов по этой теме!
@anton.glukhenko
@anton.glukhenko 2 роки тому
Хочу увидеть больше материала по асинхронности, очень хорошая подача материала
@PornoSlonik1
@PornoSlonik1 2 роки тому
Очень будем ждать материал про асинхронный пайтон, было бы крайне интересно послушать про это именно от вас !
@fedor_ado
@fedor_ado 2 роки тому
Спасибо. Очень ждём про асинхронность. Прям надо! ) 👍💪
@evgeny1775
@evgeny1775 2 роки тому
Оч круто было бы послушать подробнее про асинхронность:) Видос на высшем уровне, спасибо!
@user-vh4vg2pb2p
@user-vh4vg2pb2p 2 роки тому
Отличный кейс! Спасибо! Конечно же, ждём про асинхронность.
@vladimirushakov2626
@vladimirushakov2626 2 роки тому
Ждем асинхронщину, годный контент! Лайк однозначно!
@SashaNikishov
@SashaNikishov 2 роки тому
Спасибо. Буду ждать большой материал по asyncio.
@user-gq8yw1mm6e
@user-gq8yw1mm6e 2 роки тому
Спасибо за разбор! Очень интересно и конечно снимите про asyncio!!!!!
@sashasashovic91
@sashasashovic91 2 роки тому
Классно объясняете, благодарю за полезную информацию.
@makaronronron
@makaronronron 2 роки тому
Очень круто и интересно) Спасибо за видео
@MrDen4uk
@MrDen4uk 2 роки тому
Алексей очень полезный материал и отличное изложение!По асинхронке очень бы интересно было послушать
@mikisor4372
@mikisor4372 2 роки тому
Спасибо! Интересно узнать про асинхронность!
@4687778
@4687778 2 роки тому
Спасибо большое за видео, очень годный и полезный контент, было бы супер ещё видео про async.
@user-wg2yh1rw2t
@user-wg2yh1rw2t 2 роки тому
Будьте добры лекцию по асинхронности.
@user-il2gx9ju7l
@user-il2gx9ju7l 2 роки тому
Да, было круто послушать от тебя про асинхронность)
@andreya.gorbunov7458
@andreya.gorbunov7458 2 роки тому
О спасибо. Как раз сегодня этот вопрос изучать начал.
@StuBz211
@StuBz211 2 роки тому
Было полезно, спасибо!
@user-zk3uo3ti6f
@user-zk3uo3ti6f 2 роки тому
Я джва года ждал видео про асинхронность в python на пальцах)
@Dobrodei08
@Dobrodei08 2 роки тому
Очень жду материал по асинхронности! Спасибо!
@ok_kir4534
@ok_kir4534 2 роки тому
Надеюсь будет возможность выпустить более подробное видео по асинхронности 😃
@boltwest
@boltwest 2 роки тому
Спасибо огромное за видос! И очень хотелось бы видос про осинхронность.
@sfm6295
@sfm6295 2 роки тому
Очень нужен полноценный ролик по asyncio в python!
@alexkravets1802
@alexkravets1802 2 роки тому
Привет. Очень нужен материал по асинхронности, буду ждать. Спасибо за интересный и познавательный материал.
@user-oi1zl6de8i
@user-oi1zl6de8i 2 роки тому
Спасибо. Важный момент прояснили.
@leonidzimin2419
@leonidzimin2419 2 роки тому
Спасибо большущее! + ЗА видео про асинхронный python.
@tvoyamuha7087
@tvoyamuha7087 2 роки тому
Про асинхронность надо видео - бомби!
@SoulPervert
@SoulPervert 2 роки тому
Да, очень хотим материал про асинхронность)
@domochevsky4703
@domochevsky4703 2 роки тому
Спасибо за видос. Хотелось бы уроков по асинкио:)
@romanrrv
@romanrrv 2 роки тому
Отлично! Прекрасный ролик, спасибо. +1 к роликам по асинхронности
@gapchannelAi
@gapchannelAi 2 роки тому
Как всегда на высшем уровне
@rkozom
@rkozom 2 роки тому
Спасибо большое! Очень хочется материал по асинхронности.
@user-to3xq3wv3e
@user-to3xq3wv3e 2 роки тому
Конечно хотим!!!
@pavelbelov8019
@pavelbelov8019 2 роки тому
Да, пожалуйста побольше материала про асинхронность
@Naikshy
@Naikshy 2 роки тому
Спасибо за видео, на пайтоне сейчас не пишу но про асинхронность послушать было интересно
@TheMonth1996
@TheMonth1996 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.
@hronoz40
@hronoz40 2 роки тому
Спасибо вам большое. Хотелось бы про асинхронность больше.
@SergeySlesarenko
@SergeySlesarenko 2 роки тому
Спасибо! очень полезно! очень бы хотелось цикл видео про asyncio
@sergeydmitryenko3314
@sergeydmitryenko3314 2 роки тому
Было бы круто про асинхронность)))) Спасибо!
@hopelesssuprem1867
@hopelesssuprem1867 2 роки тому
Спасибо за видео, как раз счас изучаю эту тему)
@t0digital
@t0digital 2 роки тому
Отлично! Асинхронность must have для веба
@hopelesssuprem1867
@hopelesssuprem1867 2 роки тому
@@t0digital правда, я изучаю ml, но там это тоже нужно))
@user-rq5bf2gn3k
@user-rq5bf2gn3k 2 роки тому
Да, с удовольствием посмотрел бы ролик про асинхронность
@plintuz
@plintuz 2 роки тому
Спасибо за видео! Полезный материал. Да по асинхронности видео актуальное будет, чтоб знать как подобраться к ней, заранее спасибо!)
@user-sp1lt6uy5f
@user-sp1lt6uy5f 2 роки тому
Да информация нужна!! было бы очень круто !
@WerWolfEee
@WerWolfEee 2 роки тому
Конечно интересно, больше асинхронности богу асинхронности! :)
@Gr3gnov
@Gr3gnov 2 роки тому
Конечно хотим про асинхронность!
@valarg5756
@valarg5756 2 роки тому
Было бы супер, если бы сделал видео по асинхронной работе. С удовольствием посмотрел бы. Лайк
@lellel5521
@lellel5521 2 роки тому
Спасибо за видео, очень нужен асинхронный питон, просим☺
@soldatov_ss
@soldatov_ss 2 роки тому
Конечно хотим!) На рунете мало достойной информации по этой теме Интересно как там под капотом у асинкио, и треды тоже интерессны
@noveluke2260
@noveluke2260 2 роки тому
Спасибо за видео, ждем выпуск про асинхронность в питоне
@Bupyc2006
@Bupyc2006 2 роки тому
Ну ничёси, конечно хотим ! Очень крутая штука
@sergeyfedor45
@sergeyfedor45 2 роки тому
Ждем материал по asyncio !!!!
@romaryizhiy5747
@romaryizhiy5747 2 роки тому
+ за ролик про асинхронность
@andrii.porokhnavets
@andrii.porokhnavets 2 роки тому
Would be awesome to see video about asyncio
@diplspec5758
@diplspec5758 2 роки тому
я за выпуск про асинхронность. спасибо!
@user-so4qj3xo9s
@user-so4qj3xo9s 2 роки тому
Было бы очень интересно!
@user-tq7xp6ev1y
@user-tq7xp6ev1y 2 роки тому
Хотим большой материал про асинхронность, спасибо!
@idensas
@idensas 2 роки тому
Лучший!
@user-ci8yo4yr7s
@user-ci8yo4yr7s 2 роки тому
+1 за видео по асинхронности
@greatsol3822
@greatsol3822 2 роки тому
Очень жду подробное видео про асинхронность в питоне от Вас
@NikTigerBill
@NikTigerBill 2 роки тому
Алексей, ждем доп. материал!
@user-wo6sg4ff2e
@user-wo6sg4ff2e 2 роки тому
Очень хочется такое видео про асинхронность!!
@user-dk1lz5hx6x
@user-dk1lz5hx6x 2 роки тому
Асинхронность True, + за видос про асинхронность Асинхронные INSERT и SELECT в db.
@rob-xs7cl
@rob-xs7cl 2 роки тому
материал по асинхронному ждём❤️
@iurieboscanean1134
@iurieboscanean1134 2 роки тому
Спасибо за материал! Было бы не плохо узнать по больше про asyncio...
@user-re6vy7uo5c
@user-re6vy7uo5c 2 роки тому
Да, хотелось бы подробно про асинхронность
@vrameew
@vrameew 2 роки тому
Да хотелось бы больше информации по теме одновременного использования асинхронности и многопоточности
@vitaliingermany2505
@vitaliingermany2505 2 роки тому
Were very nice this topic
@warlordoptimist5886
@warlordoptimist5886 2 роки тому
Спасибо за видео! Асинхронность в питоне настолько же крутая насколько и непонятная. Запиши видео на эту тему, пожалуйста. И затронь, пожалуйста, асинхронные запросы (знаю про aiohttp, но может есть способ с asyncio) и, если знаешь, другие библиотеки асинхронности для питона.
@t0digital
@t0digital 2 роки тому
Для асинхронных запросов httpx возможно понравится
@warlordoptimist5886
@warlordoptimist5886 2 роки тому
@@t0digital Точно, совсем забыл о его существовании, спасибо!
@aleks007rus
@aleks007rus 2 роки тому
Полезная информация
@dmitrypronenko7604
@dmitrypronenko7604 2 роки тому
Привет. Ждём большой материал по асинхронности.
@MrLotrus
@MrLotrus 2 роки тому
Очень хочу материал по асинхронному пайтону. Причём крайне желательно с описанием именно работы event loop, события, что такое awaitable и т.д.
@rodiontimofeev392
@rodiontimofeev392 2 роки тому
Было бы очень круто послушать про асинхронность !!!
@user-dh8ig6nv7b
@user-dh8ig6nv7b 2 роки тому
Интересно было бы послушать про асинхронный Python.
@kostyamalov9866
@kostyamalov9866 2 роки тому
Было бы круто, если был бы выпуск про асинхронность!
@AndreyLikhobabin
@AndreyLikhobabin 2 роки тому
Даёшь больше асинхронности!
@damizi64
@damizi64 2 роки тому
асинхронщину хотим! спокойно часовой ролик осилю!
@rinaatt
@rinaatt 2 роки тому
Спасибо, было очень интересно. Получается, что это был баг библиотеки, им просто нужно было вставить: await asyncio.sleep(0). Очень жду выпуск об устройстве внутреннего EventLoop, как технически происходит переключение задач внутри asyncio.
@zemlyak58
@zemlyak58 2 роки тому
Алексей, спасибо за преставленный материал. Большие видео тяжело перевариваются. 20 минут на мой взгляд самое то. Спасибо.
@t0digital
@t0digital 2 роки тому
Спасибо!
Основы Asyncio
53:25
Python Russian
Переглядів 8 тис.
Всё об исключениях и работе с ними в Python
30:34
Диджитализируй!
Переглядів 48 тис.
Интернет на даче? ЭТО ПРОСТО!!!
9:19
На Связи 29
Переглядів 20 тис.
Asyncio и асинхронное программирование | Python 3, Питон 3
41:01
Андрей Иванов | Python
Переглядів 37 тис.
Алексей Кузьмин, ДомКлик «Асинхронность изнутри»
33:07
Видео с мероприятий {speach!
Переглядів 9 тис.
Асинхронщина в Python
25:32
MoscowPython
Переглядів 14 тис.