2016-04-19 4 views
1

Я пытаюсь использовать очередь tarantool fifottl для хранения некоторых отложенных задач в ней.Как получить оставшееся время задержки задачи в очереди tarantool 1.6

я должен использовать следующий интерфейс для хранения задачи:

queue.tube.tube_name:put({ some_key, 'some_data' }, { delay = 80 }) 

Как я могу восстановить текущую задержку задачи без изменения состояния задачи в?

ответ

1

Коротко: Невозможно сделать это с помощью Queue API.

Длинный ответ: Одно из основных правил этой очереди: «Никто не знает о задании, если он не принят», поэтому он против этого правила.

Грязный хак: Вы можете взять эту информацию из Tarantool пространства:

local states = require('queue.abstract.state') 

local state, time = *queue-instance*.space:get{*TASK_ID*}:unpack(2, 3)} 

if state == states.DELAYED then 
    -- task is delayed, so time in `time` is the right time 
end