Здравствуйте, ко мне на сервер будут приходить http запросы(вебхуки).
Надо их обрабатывать и передавать определенной функции обработчику(по одному или пачкой).
НО!
Этих запросов может быть гораздо больше одного, скажем 50 запросов в течении 2 секунд.
Как грамотно обрабатывать их?
Ведь не логично запускать функцию обработчик 50 раз.
Гораздо логичнее сразу 50 запросов обработать.
Но как это грамотно все это сделать?
Конкертный язык не интересует.
Интересен именно пошаговый алгоритм.
Вот пришел первый запрос, дальше мы ставим паузу и ждем еще запросы?или как это делают профессионалы?
Если клиенту отвечать (сразу) не нужно то в таких случаях обычно используют очереди или складывают например в текстовый файл. И потом процессят в отдельном процессе.
Если ответ клиенту зависит от запроса то обрабатывают сразу индивидуально, желательно асинхронно.
Моя функция обработчик работает с еще одни сервисом, в котором есть лимиты в секунду.
т.е 50 раз за 2 секунды могут вызывать ошибки в этом стороннем сервисе
Однако 1 раз все 50 будет работать нормально.
"обычно используют очереди или складывают например в текстовый файл"
Я правильно понимаю
1)вот мы получили 1-й запрос,
2)ждем допустим 5 секунд, кладем в файл
3)если других данных не пришло, обрабатываем его, доставая из файла
Если пришел еще 1 запрос, кладем его и опять ждем 5 секунд и тд.?
beginer123, типа того. Только в файл кладём сразу и засыпаем до сигнала о том что запрос обработан.
Только надо как-то сигнализировать обработчикам что запрос обработан и можно формировать ответ чтобы он проснулся и забрал данные.
Это можно сделать разными способами. Как - тянет на отдельный вопрос.
Конечно обработчик может сам проверять не готовы ли данные, например раз в секунду. Например проверять наличие файла с уникальным именем. Это гораздо проще, но нагрузка чуть больше. Думаю в вашем случае это не критично. 50 запросов в секунду это не много.