Я сканирую некоторые данные из Интернета, потому что там нет API. К сожалению, это довольно много данных с нескольких разных сайтов, и я быстро понял, что не могу просто сделать тысячи запросов на один и тот же сайт за короткое время... Я хочу получить данные как можно быстрее, но я не могу не хочу вызывать DOS-атаку :)
Проблема в том, что каждый сервер имеет разные возможности, и я не знаю их заранее. Сайты принадлежат моим клиентам, поэтому я намерен предотвратить любые возможные простои, вызванные моим скриптом. Так что никакой политики типа "сначала я попробую миллион запросов, а если не получится, попробую полмиллиона, а если не получится..." :)
Есть ли лучшая практика для этого? Откуда сканер Google знает, сколько запросов он может сделать за одно и то же время на один и тот же сайт? Возможно, они «тасуют свой плейлист», чтобы не было столько одновременных запросов к одному сайту. Могу ли я как-то обнаружить это через HTTP? Дождаться одиночного запроса, посчитать время отклика, примерно угадать, насколько сбалансирован сервер, а потом каким-то образом составить максимальное количество одновременных запросов?
Я использую скрипт Python, но это не имеет большого значения для ответа — просто чтобы вы знали, на каком языке я бы предпочел ваши потенциальные фрагменты кода.