Как написать lua-программу для tarantool, которая будет выполнять некоторые задачи регулярно (например, один раз в 10 минут) в фоновом режиме?Как написать lua-daemon для tarantool
0
A
ответ
3
Первый способ Использовать fibers. Fibers - это набор инструкций, которые выполняются при совместной многозадачности. Волокна, управляемые пакетом волокон, связаны с пользовательской функцией, называемой функцией волокна. Волокно имеет три возможных состояния: работает, приостановлено или мертво.
Пример
fiber.create(function()
while true do
-- Let say you have space with tree index.
-- Where each row index is timestamp + interval.
-- So, here you can get lower/upper bound by current timestamp e.g.
-- space:select{fiber.now()} -- get expired tasks
fiber.sleep(1) -- interval
end
end)
Второй способ использования expirationd - https://github.com/tarantool/expirationd