Тайм-аут aiohttp не работает должным образом

У меня есть код, который делает http-запросы к сайтам (используя aiohttp) с async_timeout. Если я запускаю все запросы вместе, то некоторые запросы вызывают TimeoutError (даже если время ожидания = 20 с.). Но если я запускаю один запрос - он работает.

def coro(url):    
    with async_timeout.timeout(TIMEOUT, loop=loop):
        async with session.get(url) as response:
           text, status = (await response.text()), response.status
    ...

Это проблема/ошибка async_timeout или моя?

Я пытался использовать TCPConnector (aiohttp.TCPConnector(limit=None, verify_ssl=False, loop=loop)), но это не работает


person OlegWock    schedule 16.10.2016    source источник


Ответы (1)


Нет ничего странного, если запрос выполняется более 20 секунд при очень большом количестве запросов (а этот запрос намного быстрее выполняется в одиночку).

Чтобы убедиться, просто вставьте распечатки временных меток до и после выполнения .get()/.text().

Код Timeout смертельно прост и тщательно протестирован, не заподозрите в нем ошибки.

person Andrew Svetlov    schedule 17.10.2016
comment
Спасибо. Как я могу улучшить производительность этого скрипта? Использовать многопроцессорность или несколько vps? - person OlegWock; 17.10.2016
comment
У меня есть эталонное время запроса, это примерно 0,1-0,3 секунды. - person OlegWock; 17.10.2016
comment
Извините, но ваш вопрос слишком широк. Я не могу ничего предложить, даже не глядя на исходный код. - person Andrew Svetlov; 18.10.2016
comment
Могу ли я написать на вашу электронную почту? (или другое общение?) - person OlegWock; 18.10.2016
comment
Эндрю Дот Светлов в Gmail точка com - person Andrew Svetlov; 18.10.2016