возможно я чего-то не понял, но по моему сейчас это именно так и работает (т.е. вызов take происходит в контексте GET /docs )
т.е. сейчас апи выглядит так:
POST /docs - добавляет элемент в очередь
GET /docs - цикл с таймаутом, в котором take. если take что-то нашел и закончился таймаут выдачи - выдаются данные, если нет, то ждем таймаут ожидания и потом возврашем что ничего не нашли. Данный метод в клиентском приложении опрашивает бесконечный цикл
PUT /docs/<q_id>?cmd=(ack/release) - вызывается, когда клиентское приложение сделало что-то полезное с тем, что ему отдал GET /docs
Как хочется переделать:
POST /docs - Добавляет события в очередь
и где-то в контексте тарантула крутится цикл с take /ack для обработки этой очереди.
или просто, ниже старта сервера ? а как корректно останов обработать?
local httpd = cfgserv()
httpd:start()
while true do
local data = db.q_savedoc:take(timeToTimeout)
--- обработка
end