如何为 tarantool 编写 lua-daemon
How to write lua-daemon for tarantool
如何为 tarantool 编写一个 lua 程序以在后台定期(例如每 10 分钟一次)执行一些任务?
第一种方式
使用 fibers。纤程 - 是一组通过协作式多任务处理执行的指令。由 fiber 包管理的纤程与称为 fiber 函数的用户提供的函数相关联。纤程具有三种可能的状态:运行、暂停或死亡。
例子
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
如何为 tarantool 编写一个 lua 程序以在后台定期(例如每 10 分钟一次)执行一些任务?
第一种方式 使用 fibers。纤程 - 是一组通过协作式多任务处理执行的指令。由 fiber 包管理的纤程与称为 fiber 函数的用户提供的函数相关联。纤程具有三种可能的状态:运行、暂停或死亡。
例子
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