M
M
Michael Kim2017-01-23 00:08:14
Python
Michael Kim, 2017-01-23 00:08:14

What to read to fully understand Tornado asynchrony?

Я понимаю, что такое: генераторы, yield, понимаю суть асинхронности с коллбэками. Частично понимаю корутины, но не понимаю как их применить в торнадо. Например, у нас есть метод, который отрисовывает надпись на изображении. Вызов этого метода блокирует io. Как этого избежать? Ведь если я объявляю метод через async def, а при вызове напишу await, то ничего не изменится. Я читал доки, читал различные статьи о торнадо и корутинах. Но не чувствую полного понимания темы. Что посоветуете?

Answer the question

In order to leave comments, you need to log in

1 answer(s)
Артём, 2018-09-23
@tormich

если коротко: когда ты зовёшь асинхронный метод ты хочешь в итоге отдать кому-то (оси или другому процессу) саму работу. для примера - когда ты делаешь что то типа

http_client = AsyncHTTPClient()
response = await http_client.fetch(url)

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

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question