Запросы Python медленные при больших ответах - PullRequest
0 голосов
/ 04 мая 2018

Я использую python-запросы, чтобы проверить время отклика для вызовов API, сделанных в службу. Ответы, которые возвращаются, составляют около 1-1,5 МБ, но я вижу, что большую часть этого времени тратится на разбор ответов, разбитых на 10 КБ (в методе содержимого модуля request). Если я делаю параллельные запросы, используя асинхронную среду, такую ​​как grequests, время отклика значительно уменьшается.

4 одновременных запроса

Elapsed: 0.807070970535 <- response time of reading first byte
Elapsed: 0.816656827927 <- response time of reading first byte
Elapsed: 0.797511100769 <- response time of reading first byte
Elapsed: 0.871026039124 <- response time of reading first byte
method took content 5.80513095856 <- response time reading entire response
method took content 5.89753890038 <- response time reading entire response
method took content 7.95831394196 <- response time reading entire response
method took content 8.77741289139 <- response time reading entire response

При одном запросе время ответа при чтении всего ответа составляет всего около 2 секунд. Почему использование нескольких 1,5 МБ ответов занимает 5-8 секунд? Это потому, что поток переключается между чтением в 4 разных ответах? Это из-за задержки в сети (вероятно, не единственная проблема, так как сервер, к которому я обращаюсь, может принимать гораздо больший трафик)? Или это из-за недостатка ресурсов с процессором? Существуют ли какие-либо альтернативные структуры httplib, которые значительно улучшат скорость?

Спасибо!

...