Openresty的Lua定时器(计划任务)

在系统中有一类需求是:周期性的执行某些任务,利用定时的timer去实现这种操作。

Openresty为Lua提供了这种机制实现的API,通过设定timer来完成这种类似计划任务功能。

下面,就是一个典型的Openresty的timer API的使用例子:

实现思路是,通过一个timer设定调用一个函数,在函数内部还有一个循环递归的timer调用,调用函数自身,实现周期性的函数执行。

–此函数的主要的目的是6秒钟的时间,对redis中某Key,进行数值累加。

local handler

function handler(premature, params)

--定时执行一个redis的累加计数操作。

RedisCommon.add()

--递归的timer,重复调用handler函数。

local ok, err = ngx.timer.at(6, handler, "params-data")

        ngx.log(ngx.DEBUG, "ok:", ok, " err:", err)

end

–第一次设定timer,调用hander函数。

local ok, err = ngx.timer.at(6, handler, "params-data")

ngx.log(ngx.DEBUG, "ok:", ok, " err:", err)

if not ok then

        ngx.log(ngx.ERR, "err:", err)

end

timer一般用于,定时去服务器上取一些数据,或是定时扫描本地文件是否有变动,根据目地不同功能也不一样。

作者:糖果

PS:转载到其它平台请注明作者姓名及原文链接,请勿用于商业用途。

糖果

糖果
LUA教程

如果不小心安装错 SQL Server 为 Evaluation 的版本,要小心当超过 180 天之后,系统就会无法正常使用了 这几天遇到一个蛮特别的案例,原本收到的问题是 “维护计划” 忽然无法使用,即便是里面没有任何的Task,都无法顺利地执行。但从对方所提供的错误消...… Continue reading

PLUM NIZ静电容键盘怎么样?

Published on September 25, 2020

程序员如何选择合适的机械键盘

Published on September 18, 2020