Skip to content

Latest commit

 

History

History
34 lines (23 loc) · 2.53 KB

homework.md

File metadata and controls

34 lines (23 loc) · 2.53 KB

Домашнее задание #06 (потоки, процессы)

1. Клиент-серверное приложение для обкачки набора урлов

Cервер

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

Все действия должны быть выделены в классы/функции.

2. Тесты в отдельном модуле

3. Перед отправкой на проверку код должен быть прогнан через flake8 и pylint, по желанию еще black