2016-06-18 2 views
-1


Я хотел бы знать, возможно ли, чтобы программа Ruby обладала несколькими IP-адресами? Я пытаюсь загрузить много данных с сайта, но он очень медленный, только с одним соединением за раз.
Я намерен многопоточную мою программу с каждым потоком, используя свой собственный IP-адрес, но я не знаю, возможно ли это в первую очередь, любая помощь или подсказки были бы весьма признательны.
ruby ​​scrapp с несколькими IP-адресами

+0

1 ф на одну машину, единственный способ эффективно сделать это было бы иметь несколько машин, подключиться к прокси или vpn и запустить ваш процесс через это. –

+0

У меня не может быть более одной машины, поэтому мне нужно использовать несколько IP-адресов. Можно ли использовать vpn в потоке программы? –

+0

Возможно, было бы лучше, если бы вы разбили свою программу на несколько компонентов, 1 мастер, который будет программно подключен к vpn, 2 - компонент, который сбрасывает данные. Вам нужно будет искать vpn с api todo так. Также вы можете протестировать соединение, чтобы выяснить ограничение скорости на веб-сайте, и вы должны использовать случайную переменную для изменения времени вызова, потому что некоторые веб-сайты ищут сжатые вызовы. В качестве альтернативы вы можете попытаться написать свой скребок с помощью документов Google в зависимости от данных. –

ответ

1

Возможно, что машина или программа имеют несколько IP-адресов. Вы можете даже иметь несколько сетевых адаптеров и привязывать каждый из них к различным физическим соединениям.

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

Лучшим подходом, который вы можете предпринять, является разработка вашей программы, чтобы она могла работать распределенной. Таким образом, вы можете синхронизировать несколько копий и выполнять работу параллельно. Затем вы можете масштабировать его по горизонтали (создавать больше копий) по мере необходимости, а также по разным машинам и соединениям, если это необходимо.

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

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

Отъезд an introduction to Ruby sockets.

Кроме того, проверить эти вопросы, связанные:

+0

Я использую несколько машин, но я сталкиваюсь с другими проблемами: они не имеют одинаковых спецификаций вообще (у них нет денег, чтобы инвестировать в них больше). Поэтому наилучшим доступным решением является 1 программа с несколькими IP-адресами. подскажите, как подойти к проблеме? –

+0

Если это медленное соединение, вам нужно добавить дополнительные подключения. Я говорю о независимых сетевых подключениях, а не только сетевых адаптерах. У меня больше нет информации, чтобы добавить прямо сейчас, извините. Я увижу позже, если есть драгоценный камень или что-то, что можно использовать для контроля соединений http на низком уровне. – Alpha

+0

@MatthieuRaynauddeFitte Я обновил свой ответ. Надеюсь, это поможет! – Alpha

Смежные вопросы