Найти - Пользователи
Полная версия: http client с небольшой логикой
Начало » Network » http client с небольшой логикой
1
unkier
Привет коллеги.

Есть у меня такая задача, работать с сайтиками через REST api. Всё как бы норм, питон в этом могуч. Заюзал requests-futures, асинхронность все дела. В общем proof of concept работает. Но тут появляется нюанс. Сайты бывают медленные, бывают быстрые. Ответы бывают большие, бывают маленькие. А нужно провести сеанс сбора данных со всех сайтиков и потом с данными работать. И получается что может кто то затупить и всё будет ждать его. Просто выставлять таймаут не подходит. Потому что может это ответ большой от сайта, а может ответ маленький и он просто затупил.

В общем нада бы встроить логику в процесс приёма данных с сайта. Чтобы мониторилась скорость и на основании размера получаемых данных, принималось решение ждать сайта или окончить его мучения.
И чтобы это всё продолжало работать асинхронно.

В современных http client либах я такого что то не встречал. Может плохо искал.

Прошу знатоков придать мне ускорение в нужную сторону. Заранее благодарен.
s0rg
Content-Length
john123
unkier
И получается что может кто то затупить и всё будет ждать его. Просто выставлять таймаут не подходит. Потому что может это ответ большой от сайта, а может ответ маленький и он просто затупил.

Уточните пожалуйста, “всё” - это что? Кто кого будет ждать?
И что у Вас стоит в приоритете - скорость?
unkier
john123
Уточните пожалуйста, “всё” - это что? Кто кого будет ждать?
И что у Вас стоит в приоритете - скорость?

всё - это логика обработка данных. если к примеру данные тянутся с 15 источников и 14 уже стянулись а с 15 данные идут по паре байт в секунду, то в моём случае нужно забить на тормозящий источник ибо остальные данные успеют устареть. да, скорость в приоритете.

решил копнуть в сторону aiohttp, вроде там это можно малой кровью докрутить. вот, может кому пригодится : https://github.com/KeepSafe/aiohttp/issues/196

This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB