OpenResty 使用 ngx.timer.every 完成定时任务
OpenResty Lua About 1,072 words方法说明
OpenResty
中的ngx.timer.every
可创建后台定时任务,配合init_worker_by_lua*
阶段可完成定时任务初始化。
文档地址:https://github.com/openresty/lua-nginx-module#ngxtimerevery
参数解释
与ngx.timer.at
相似。
hdl, err = ngx.timer.every(delay, callback, user_arg1, user_arg2, ...)
delay
: 指定延迟时间执行,单位秒。不可以为0
callback
: 回调函数,在入参中加入premature
会让Nginx
内核自动调用。user_atg1...
: 调用时接收的参数。
代码示例
在init_worker_by_lua_file
阶段完成初始化。
0 == ngx.worker.id()
的判断是保证只初始化一次。
local db = require "module.db"
local util = require "module.util"
local task_query_web_stat_delay = 1800 -- in seconds 30分钟
local task_query_web_stat = function(premature)
if not premature then
util.query_web_stat()
end
end
if 0 == ngx.worker.id() then
-- 启动时初始化
ngx.timer.at(0, task_query_web_stat)
local ok_task_query_web_stat, err_task_query_web_stat = ngx.timer.every(task_query_web_stat_delay, task_query_web_stat)
if not ok_task_query_web_stat then
ngx.log(ngx.ERR, "failed to create timer task_query_web_stat#", err_task_query_web_stat)
return
end
end
开源案例
Views: 9,198 · Posted: 2020-03-08
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb/LiteNote扫描下方二维码关注公众号和小程序↓↓↓
Loading...