В общем, вы предполагаете, что этого не должно произойти.
В случае доступа к внешним серверам это не так. Ваш код должен быть полностью осведомлен о серверах, которые могут не отвечать, не отвечать вовремя или отвечать неправильно. В процессе HTTP допускается, что все может пойти не так. Если вы достигнете сервера, вы должны получить уведомление с помощью кода ошибки HTTP (хотя это не всегда происходит), но также проблемы с сетью могут привести к отсутствию или бесполезному ответу.
Не доверяйте внешнему вводу. Это корень проблемы.
В вашем конкретном случае вы последовательно увеличиваете количество запросов. Это создаст больше запросов, открытых сокетов и другого использования. Чтобы найти решение вашей конкретной проблемы, вам необходим расширенный доступ к серверу, чтобы вы могли просматривать файлы журналов и отслеживать открытые соединения и другие проблемы. Желательно, чтобы вы проверили это на тестовом сервере без какого-либо другого программного обеспечения, создающего соединения, чтобы вы могли изолировать проблему.
Но насколько хорошо вы это сделали, у вас есть только неопределенности. Например, вы можете быть заблокированы внешними серверами, потому что вы делаете слишком много запросов. Вы можете застрять в некоторых фильтрах безопасности, таких как фильтры DDOS и т. Д. Мониторинг и настройка количества запросов (автоматических или ручных) создаст для вас наиболее стабильное решение. Вы также можете просто принять эти потерянные запросы и обработать стабильную очередь, которая гарантирует, что вы получите содержимое в определенный момент времени.