master-worker cервер для обработки запросов от клиента.
Алгоритм должен быть следующим:
- Мастер и воркеры это разные потоки в едином приложении;
- Количество воркеров задается при запуске;
- Мастер слушает порт, на который клиент будет по TCP отправлять урлы для обкачки;
- Мастер принимает запроc и передает его одному из воркеров;
- Воркер читает url от клиента;
- Воркер обкачивает url по http и возвращает клиенту топ K самых частых слов и их частоту в формате json {"word1": 10, "word2": 5};
- После каждого обработанного урла сервер должен вывести статистику: сколько урлов было обработано на данный момент суммарно всеми воркерами;
python server.py -w 10 -k 7
(сервер использует 10 воркеров для обкачки и отправляет клиенту топ-7 частых слов)
Утилита, отправляющая запросы с урлами серверу по TCP в несколько потоков. Нужно сделать следующее:
- Подготовить файл с запросами (порядка 100 разных url);
- На вход клиенту передаётся два аргумента --- файл с URL'ами и M (количество потоков);
- Клиент создает M потоков, отправляет запросы на сервер в каждом потоке и печатает ответ сервера в стандартый вывод, например: `xxx.com: {'word1': 100, 'word2': 50}`.
python client.py 10 urls.txt
Все действия должны быть выделены в классы/функции.