我正在尝试使用tarantool fifottl队列来存储一些延迟的任务。
我必须使用以下界面来存储任务:
queue.tube.tube_name:put({ some_key, 'some_data' }, { delay = 80 })
如何在不更改任务状态的情况下检索当前任务延迟?
答案 0 :(得分: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