LINUX.ORG.RU

Преобразовать синхронный запрос в асинхронный

 , ,


0

1

Возникла такая интересная задача. Нужен некий HTTP-демон (конвертер) который может сделать вот такое:

  1. На определенный урл поступает HTTP запрос;
  2. Конвертер сохраняет запрос вместе с его сокетом в буфер с определенным идентификатором (сохраняя открытым входящее HTTP соединение);
  3. Запрос с присоединенным идентификатором входящего запроса передается в модуль асинхронной обработки (обычный fastcgi который регистрирует запрос в очереди на обработку и закрывает коннект);
  4. По окончанию обработки, модуль асинхронной обработки отправляет на второй определенный урл (урл конвертера) через HTTP запрос, идентификатор входящего запроса из п.2 и результатирующий ответ на входящий запрос;
  5. Конвертер извлекает из буфера ждущих соединений нужный сокет и отдает в него полученный в п.4 ответ.

По идее, это задача очень подходящая для модуля nginx. Но я не слышал о существовании такого модуля. Может кто-то в курсе по этому поводу и может дать наводку?

Может есть другие решения такой задачи?

Хотелось-бы уточнить задачу.

После того, как запрос получен и отправлен в асинхронную часть на выполнение, что-бы он не занимал рабочий процесс FastCGI демона, через X-Accell-Redirect перенаправить его на легкий «держатель запросов», который по приему нотификации об исполнении определенного запроса (через тот-же HTTP) мог отдать этот запрос с указанным в нотификации ответом.

UncleAndy ★★★
() автор топика
Ответ на: комментарий от UncleAndy

В общем, выбрал для реализации этого функционала node.js. Очень быстро и симпатично получилось.

UncleAndy ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.