OpenResty 使用 ngx.timer.every 完成定时任务
OpenResty Lua 大约 1072 字方法说明
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
开源案例
阅读 7608 · 发布于 2020-03-08
————        END        ————
Give me a Star, Thanks:)
https://github.com/fendoudebb扫描下方二维码关注公众号和小程序↓↓↓

昵称:
随便看看
换一批
-
Nginx 解决前端 CORS 跨域问题阅读 9888
-
Windows C 盘隐藏文件 pagefile.sys 扩大电脑内存阅读 945
-
设计模式之备忘录模式阅读 2233
-
Angular Material mat-error 组件输入时不校验解决方法阅读 2071
-
Kubernetes 查看所有 Pod 日志阅读 1031
-
Kubernetes kubectl top 命令报 error: Metrics API not available阅读 2487
-
Spring 组件的注册时机阅读 1357
-
Linux 修改文件执行权限阅读 2802
-
Docker 容器间网络通讯阅读 1071
-
JMeter 使用 Critical Section Controller 按顺序执行接口阅读 2132