Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
Да, этот способ проще. Но у него есть несколько важных ограничений:
gevent — это немного не про то, про что async-awaitЦель у них одна и та же.
await wait([getUserByID(id) for id in ids]). В случае же gevent синтаксис был бы гораздо более тяжелыйНет, с gevent этот пример может быть таким:
wait([getUserByID(id) for id in ids])где getUserByID с декоратором «async», т.е. аналогично, но в gevent можно более продуктивно т.к. не нужно раскрашивать функции в разные цвета, в отличие от asyncio.а исключение в любом из них пробрасывать наружу.Исключения как раз там работают нормально, а вот для asyncio, который был внешней либой, пришлось расширять синтаксис питона, дорабатывать проборос исключений через yield from, да и сам yield from создали по большей части для asyncio, но в последствии его забросили и перешли на async await. Т.е. посути из-за одной либы изнасиловали питон.
Корутины содержат операторы yield, с помощью которых мы определяем места, где можно переключиться на другие ожидающие выполнения задачи.
За переключение контекста в asyncio отвечает, который передаёт управление обратно в event loop, а тот в свою очередь — к другой корутине.
response = await aiohttp.request('GET', service.url) вызывает ошибку.Где-то хихикает один goшник)))
AsyncIO для практикующего python-разработчика