Что почитать, чтобы полностью разобраться в асинхронности Tornado?

Я понимаю, что такое: генераторы, yield, понимаю суть асинхронности с коллбэками. Частично понимаю корутины, но не понимаю как их применить в торнадо. Например, у нас есть метод, который отрисовывает надпись на изображении. Вызов этого метода блокирует io. Как этого избежать? Ведь если я объявляю метод через async def, а при вызове напишу await, то ничего не изменится. Я читал доки, читал различные статьи о торнадо и корутинах. Но не чувствую полного понимания темы. Что посоветуете?
  • Вопрос задан
  • 720 просмотров
Пригласить эксперта
Ответы на вопрос 1
tormich
@tormich
программист и гик.
если коротко: когда ты зовёшь асинхронный метод ты хочешь в итоге отдать кому-то (оси или другому процессу) саму работу. для примера - когда ты делаешь что то типа
http_client = AsyncHTTPClient()
response = await http_client.fetch(url)

то по сути питон в итоге отдаст операционке дожидаться ответа, а сам вернётся в иолуп и будет выполнять что то другое пока ось не позавёт его колбек.
Тут можно почитать подробней про то что происходит под капотом https://habr.com/company/infopulse/blog/415259/

З.Ы.
в случае с изображением наверное лучшее что можно сделать это отдавать сам джоб в отдельный процес.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы