Как в python ограничить доступ к ресурсу из разных процессов
Добрый день.
Имеется несколько параллельно запускаемых процессов на python.
Каждый процесс подключается к удаленному API и качает данные.
Проблема в том, что у API есть ограничение 10 запросов в секунду.
Можно запускать все в одном процессе, но тогда сильно увеличится время ожидания, т.к.
запрос может занимать от 0.1 до 10 секунд.
Возьмите celery, настройте запуск таски по крону 1 раз в секунду. И в этой таске запускайте 10 тредов, которые обрабатывают респонсы. Помните о локах, если работаете в тредах с общим ресурсом. Запуск таски по крону гарантирует в таком случае старт задачи независимо от того, завершилась ли предыдущая такая же (в отличие от timedelta).