В этом случае я обычно использую постепенно более длительный период ожидания для каждого запроса.
Возможно, сервер почти запущен, поэтому вы можете просто повторить попытку через секунду.Но если этот запрос не удался, подождите 2 секунды, но если этот запрос не сработал, подождите 4 и т. Д.
Возможно, вы захотите ограничить количество ожидания до 30 секунд или минуты или что-то в этом роде.Вероятно, разумно определить максимальное количество попыток, чтобы не просто ждать бесконечно.
Примерно так может рассчитаться ваша следующая задержка в секундах:
seconds_to_wait = Math.min(60, Math.pow(2, try_num));