Обычный метод обработки большого количества похожих вызовов:
- Создание очереди Amazon Simple Queue Service (SQS) и pu sh для каждого запроса в очереди как отдельное сообщение. В вашем случае сообщение будет содержать URL-адрес, который вы должны sh получить.
- Создайте AWS лямбда-функцию , которая выполняет загрузку и сохраняет данные в базе данных.
- Настройте лямбда-функцию для запуска очереди SQS
Таким образом, очередь SQS может запускать сотни параллельных функций Lambda . Предел параллелизма по умолчанию составляет 1000 лямбда-функций, но вы можете запросить его увеличение.
Тогда вам понадобится отдельный процесс, который каждые 20 минут запрашивает в базе данных URL-адреса и отправляет сообщения в Очередь SQS.
Полный процесс:
Schedule -> Lambda pusher -> messages into SQS -> Lambda workers -> database
Прелесть этой конструкции в том, что она может масштабироваться до обработки больших рабочих нагрузок и работать параллельно , а не каждый запрос curl
должен ждать. Если сообщение не может быть обработано, Lambda автоматически попытается снова. При повторных сбоях сообщение будет отправлено в очередь недоставленных писем для дальнейшего анализа и обработки.
Если вы sh будете выполнять 25000 запросов каждые 20 минут (1200 секунд), для этого потребуется выполнение запроса каждые 0,05 секунды. Вот почему так важно работать параллельно.
Кстати, если вы пытаетесь очистить эту информацию с одного веб-сайта, я предлагаю вам выяснить, предоставляют ли они API, иначе вы можете нарушить Условия и Условия веб-сайта, против которых я настоятельно не рекомендую.