OpenResty使用ngx.timer.every完成定时任务
OpenRestyLua大约 1071 字方法说明
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
开源案例
阅读 1329 · 发布于 2020-03-08
————        END        ————
扫描下方二维码关注公众号和小程序↓↓↓

昵称: