В настоящее время я изучаю Python (с фона Java), и у меня есть вопрос о том, что я использовал бы потоки в Java.
Моя программа будет использовать рабочих для периодического чтения некоторых веб-сервисов. Каждый работник периодически будет вызывать веб-сервис в разное время.
Из того, что я прочитал, предпочтительнее использовать модуль multiprocessing
и настроить рабочих как самостоятельные процессы, которые выполняют свои задачи сбора данных. На Java я бы сделал что-то концептуально похожее, но используя потоки. Хотя кажется, что я могу использовать потоки в Python, я проиграю при использовании нескольких процессоров.
Вот мужество моего вопроса: интернет-сервис задушен, а именно: рабочие не должны называть его больше, чем х раз в секунду. Каков наилучший способ для работников проверить, могут ли они запрашивать данные?
Я запутался в том, что это должно быть достигнуто с помощью:
- Трубы как способ связи с каким-либо другим "управляющим объектом", который контролирует общие вызовы в секунду.
- Что-то в строках
nmap
, чтобы поделиться некоторыми данными/значением между процессами, которые описывают, могут ли они вызвать веб-службу. - Объект
Manager()
, который отслеживает вызовы в секунду и сообщает рабочим, если у них есть разрешение на выполнение своих вызовов.
Конечно, я думаю, это может привести к тому, что я отслеживаю звонки в секунду. Я полагаю, что одним из вариантов было бы, чтобы рабочие вызывали функцию на какой-то другой объект, что делает вызов веб-службе и записывает текущее количество вызовов/сек. Другим вариантом будет функция, которая вызывает веб-сервис для жизни внутри каждого рабочего, и для них сообщение управляющего объекта при каждом вызове веб-службы.
Мысли приветствуются!