Какой питонический способ справиться с рабочими процессами, которые должны координировать свои задачи?

В настоящее время я изучаю Python (на фоне Java), и у меня есть вопрос о том, для чего я бы использовал потоки в Java.

Моя программа будет использовать воркеры для периодического чтения некоторых данных из некоторого веб-сервиса. Каждый воркер будет периодически вызывать веб-службу в разное время.

Из того, что я прочитал, предпочтительнее использовать модуль multiprocessing и настраивать рабочих как независимые процессы, которые работают со своими данными -сборочные задания. На Java я бы сделал что-то похожее, но с использованием потоков. Хотя кажется, что я могу использовать потоки в Python, я проиграю в использовании нескольких процессоров.

Вот суть моего вопроса: веб-служба ограничена, а именно, рабочие не должны вызывать ее больше, чем x раз в секунду. Каков наилучший способ для рабочих проверить, могут ли они запрашивать данные?

Я не понимаю, нужно ли этого достичь, используя:

  • Каналы как способ связи с каким-то другим «управляющим объектом», который отслеживает общее количество вызовов в секунду.
  • Что-то вроде nmap , для обмена некоторыми данными / значениями между процессами, которые описывают, могут ли они вызывать веб-службу.
  • A Manager () объект, который отслеживает количество вызовов в секунду и информирует работников, есть ли у них разрешение на выполнение своих вызовов.

Конечно, я предполагаю, что это может быть связано с тем, как я отслеживаю количество вызовов в секунду. Я полагаю, что одним из вариантов было бы, чтобы рабочие вызывали функцию для какого-либо другого объекта, который выполняет вызов веб-службы и записывает текущее количество вызовов в секунду. Другой вариант - для функции, которая вызывает веб-службу, жить внутри каждого рабочего, и чтобы они отправляли сообщение управляющему объекту каждый раз, когда они делают вызов веб-службы.

Мысли приветствуются!

13
задан Edwardr 19 June 2011 в 20:13
поделиться