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

DoReMi

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

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

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

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

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

Ferris

Client
Регистрация
02.10.2020
Сообщения
55
Благодарностей
20
Баллы
8
Если есть уже готовый список этих страниц его можно либо положить в БД и каждый отдельный поток будет вытаскивать оттуда по странице и парсить, либо в текстовый документ (а его подключать в список) и также каждый будет забирать по строке. Это если я правильно понял вопрос:-)
 

Ferris

Client
Регистрация
02.10.2020
Сообщения
55
Благодарностей
20
Баллы
8
  • Спасибо
Реакции: DoReMi

DoReMi

Пользователь
Регистрация
26.06.2017
Сообщения
74
Благодарностей
6
Баллы
8

DoReMi

Пользователь
Регистрация
26.06.2017
Сообщения
74
Благодарностей
6
Баллы
8
Если есть уже готовый список этих страниц его можно либо положить в БД и каждый отдельный поток будет вытаскивать оттуда по странице и парсить, либо в текстовый документ (а его подключать в список) и также каждый будет забирать по строке. Это если я правильно понял вопрос:-)
1. Да есть готовый список страниц, которые лежит в базе (NoSQL) по сути можно и в SQL вопрос ни в том.
2. А по какому принципу будет вытаскивать из БД, там же многопоточность, надо видимо какая то логика, типа берем записи, где нет поля в которое парсится контент, берем первую туда ложим контент....как-то так или какая логика выбора нужных записей?
 

Ferris

Client
Регистрация
02.10.2020
Сообщения
55
Благодарностей
20
Баллы
8
1. Да есть готовый список страниц, которые лежит в базе (NoSQL) по сути можно и в SQL вопрос ни в том.
2. А по какому принципу будет вытаскивать из БД, там же многопоточность, надо видимо какая то логика, типа берем записи, где нет поля в которое парсится контент, берем первую туда ложим контент....как-то так или какая логика выбора нужных записей?
Да, например так:-) Или некий флажок сделать у таблицы со списком страниц, к примеру ставить там Y когда строка взята одним из потоков в работу, и, соответственно, перед тем как брать новую строку проверять нет ли там этого флага (Y):
C#:
SELECT url
  FROM url_table
 WHERE url_in_use != 'Y'
 LIMIT 1
 
  • Спасибо
Реакции: DoReMi

Ferris

Client
Регистрация
02.10.2020
Сообщения
55
Благодарностей
20
Баллы
8
Хотя тут возможен сценарий когда в многопотоке могут схватить одну и ту же строку. Наверное даже проще использовать именно файл со списком, зенка не допустит одновременную запись в него.
 

DoReMi

Пользователь
Регистрация
26.06.2017
Сообщения
74
Благодарностей
6
Баллы
8
Да, например так:-) Или некий флажок сделать у таблицы со списком страниц, к примеру ставить там Y когда строка взята одним из потоков в работу, и, соответственно, перед тем как брать новую строку проверять нет ли там этого флага (Y):
C#:
SELECT url
  FROM url_table
WHERE url_in_use != 'Y'
LIMIT 1
Ясно, спасибо.
 

cooki

Client
Регистрация
05.10.2014
Сообщения
152
Благодарностей
36
Баллы
28
а почему бы просто из списка с удалением не брать строки?
 

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