Организация многопоточности, как верно сделать?

  • Автор темы Автор темы DoReMi
  • Дата начала Дата начала

DoReMi

Пользователь
Регистрация
26.06.2017
Сообщения
74
Реакции
6
Баллы
8
1. Есть 500 000 страниц, которые надо спарсить и сохранить в базу
2. В час примерно получается сохранить 1500 страниц.

Если гонять в 1 поток, то получается 300 часов, много в итоге

Как вариант добавить много проектов в сам Zennoposter и через входные данные "показать", кому что парсить.

Вообще это правильные рассуждения или как это делать на практике?

З,Ы Так же у меня действия выполняются ни в браузере (POST GET), в таком случае как смотреть, что происходит в инстанс?
 
Последнее редактирование:
Если есть уже готовый список этих страниц его можно либо положить в БД и каждый отдельный поток будет вытаскивать оттуда по странице и парсить, либо в текстовый документ (а его подключать в список) и также каждый будет забирать по строке. Это если я правильно понял вопрос:)
 
Если есть уже готовый список этих страниц его можно либо положить в БД и каждый отдельный поток будет вытаскивать оттуда по странице и парсить, либо в текстовый документ (а его подключать в список) и также каждый будет забирать по строке. Это если я правильно понял вопрос:-)

1. Да есть готовый список страниц, которые лежит в базе (NoSQL) по сути можно и в SQL вопрос ни в том.
2. А по какому принципу будет вытаскивать из БД, там же многопоточность, надо видимо какая то логика, типа берем записи, где нет поля в которое парсится контент, берем первую туда ложим контент....как-то так или какая логика выбора нужных записей?
 
1. Да есть готовый список страниц, которые лежит в базе (NoSQL) по сути можно и в SQL вопрос ни в том.
2. А по какому принципу будет вытаскивать из БД, там же многопоточность, надо видимо какая то логика, типа берем записи, где нет поля в которое парсится контент, берем первую туда ложим контент....как-то так или какая логика выбора нужных записей?

Да, например так:-) Или некий флажок сделать у таблицы со списком страниц, к примеру ставить там Y когда строка взята одним из потоков в работу, и, соответственно, перед тем как брать новую строку проверять нет ли там этого флага (Y):
C#:
Развернуть Свернуть Копировать
SELECT url
  FROM url_table
 WHERE url_in_use != 'Y'
 LIMIT 1
 
  • Оценить
Реакции: DoReMi
Хотя тут возможен сценарий когда в многопотоке могут схватить одну и ту же строку. Наверное даже проще использовать именно файл со списком, зенка не допустит одновременную запись в него.
 
Да, например так:-) Или некий флажок сделать у таблицы со списком страниц, к примеру ставить там Y когда строка взята одним из потоков в работу, и, соответственно, перед тем как брать новую строку проверять нет ли там этого флага (Y):
C#:
Развернуть Свернуть Копировать
SELECT url
  FROM url_table
WHERE url_in_use != 'Y'
LIMIT 1

Ясно, спасибо.
 
а почему бы просто из списка с удалением не брать строки?
 

Кто просматривает тему: (Всего: 0, Пользователи: 0, Гости: 0)