Максимизировать количество параллельных запросов (aiohttp)

ggplot(faithfuld, aes(eruptions, waiting)) + 
  geom_contour(aes(z = density, 
                   colour = factor(..level.. == 0.02, 
                                   levels = c(F, T), 
                                   labels = c("Others", "0.02"))),
               breaks = 0.005*0:10) + 
  scale_colour_manual(values = c("black", "red")) + 
  labs(colour = "Of interest:")

Это довольно расширяемый способ сделать это. Все значения «FALSE» для ..level.. == 0.02 будут отображаться как черные, а «TRUE» - красным. Чтобы это правильно работало, мне нужно было установить разрывы в соответствии с точно 0,02 (и другие кратные 0,05), что и делает breaks =.

1
задан pieca 21 March 2019 в 10:02
поделиться

1 ответ

По умолчанию aiohttp ограничивает количество одновременных подключений до 100. Это достигается путем установки по умолчанию limit на TCPConnector объекта , который используется ClientSession. Вы можете обойти это, создав и передав пользовательский соединитель сеансу:

connector = aiohttp.TCPConnector(limit=None)
async with aiohttp.ClientSession(connector=connector) as session:
    # ...

Обратите внимание, что вы, вероятно, не хотите устанавливать это число слишком высоким: емкость вашей сети, ЦП, ОЗУ и целевой сервер имеют свои собственные ограничения и попытка установить огромное количество соединений может привести к увеличению отказов.

Оптимальное число, вероятно, может быть найдено только с помощью экспериментов на конкретной машине.


Не связано:

Вам не нужно создавать задачи без причины . Большинство asyncio api принимают регулярные сопрограммы. Например, ваши последние строки кода могут быть изменены следующим образом:

loop = asyncio.get_event_loop()
loop.run_until_complete(run(url_list))

Или даже просто asyncio.run(run(url_list)) ( doc ), если вы используете Python 3.7

0
ответ дан Mikhail Gerasimov 21 March 2019 в 10:02
поделиться
Другие вопросы по тегам:

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