@toddbarry

Какие проблемы могут возникнуть с aiohttp?

Всё таки aiohttp это асинхронный фреймворк, однако типичных казусов асинхронности отловить не удалось.
По сему я как-то не очень понимаю, как он работает?
Допустим, я хочу посчитать переменную b, которая просто на бекенде приравнивается к переменной a, которая в свою очередь достаётся из базы.

Путь это будет происходить так: есть коррутина, в которой происходит присваивание b=a при помощи запуска другой подпрограммы, которая выполняет запрос к базе - лезет туда за переменной a.

Эти задачи разделены и в event loop попадают как разные. причем определяется сперва подпрограмма, которая лезет в базу. Очевидно, что она будет выполняться дольше чем простое присваивание b=a, поэтому event loop перейдёт сразу к присваиванию. Значит обработка не похожа на синхронную. Как это работает? Везде пишут, что aiohttp позволяет запускать асинхронные воркеры и при этом писать код так, будто бы он синхронный.

Я могу полностью положиться на это утверждение?
Должны ведь быть какие-то оговорки? Для повышения производительности лучше писать коррутины маленькими и разбивать задачи на кучу подпрограмм? или напротив, лучше всё запихивать в одну коррутину?

Простите, просто я немного запутался
  • Вопрос задан
  • 144 просмотра
Пригласить эксперта
Ответы на вопрос 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Асинхронное программирование
Седой и строгий
Везде пишут, что aiohttp позволяет запускать асинхронные воркеры и при этом писать код так, будто бы он синхронный.

Херню пишут.

поэтому event loop перейдёт сразу к присваиванию.

Нет, вся цепочка асинхронных вызовов от кода принявшего клиентское соединение до кода лезущего в базу остановится в ожидании данных, а цикл событий побежит дальше обслуживать другие цепочки и проверит готовность данных на следующей итерации.
Ответ написан
Ваш ответ на вопрос

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

Похожие вопросы