Веб-сервис, NGINX, php-fpm — генерящий, для примера, картинки.
Редкие запросы на
/create
создают асинхронную задачу, которая попадает в (пустую) очередь и быстро выполняется отдельным воркером (1 или несколькими).
В обычном сценарии, запрос мгновенно отдаёт номер задачи. И потом другим методом
/result
можно запрашивать результат выполнения этой задачи – получить ответ «ещё не готово» или получить URL сгенеренной картинки.
Как можно было бы при таком сценарии сделать задержку мгновенного ответа на некий таймаут, скажем, 500ms. Если под конец этого времени задача уже выполнена – сразу вернуть её результат (URL). А если всё ещё нет — то номер задачи для последующих запросов результата?
Пока только задумался над такой возможностью. Вот есть модуль "echo" для NGINX, позволяющий «поспать» без блокировки N секунд перед отдачей ответа директивой
echo_sleep. Может, на нём попробую. Кто-нибудь делал похожую механику?
В идеале, конечно, не спать именно 500ms, а по готовности задачи через событие как-то возвращать ответ.
Как бы NGINX должен принять запрос и сразу передать его в php-fpm, но далее не сразу отдавать ответ, а подождать (события или таймаута) и вернуть ответ из другого уже url.