Если у вас ограниченное количество запросов в секунду, вы можете отслеживать, сколько запросов вы оставили в главном потоке, и каждый ребенок может запросить главный поток, если он может отправить запрос перед отправкой, и главный поток выполнит запрос только тогда, когда у него есть запросы, доступные для текущей секунды. Here is another answer showing how master -> slave communication works.
В конце каждой секунды вы затем сбросите главный поток на количество доступных запросов.
Этот подход был бы лучше всего для достижения максимума, однако гораздо более простой подход состоял бы в том, чтобы запустить N число потоков и позволить им делать K количество запросов в секунду, где K * N меньше числа запросы разрешены в секунду. Самый безопасный и наименее вероятный способ ограничить это заключается в том, чтобы сделать setTimeout между окончанием одного запроса и началом следующего запроса, но это позволит избежать задержки, требуемой для обработки запроса. Следующий лучший вариант - для каждого потока, чтобы запустить N количество запросов в начале второго, а не стрелять снова до следующей секунды.
Ваше безопасное решение - не приближаться к пределу и вместо этого придерживаться максимального количества N/2 запросов в секунду, где N - максимальное количество запросов в секунду.