• openresty的ngx.timer.at


    openresty的ngx.timer.at真是个强大的方法。

    • 例如某些函数不可以在一些NGINX的执行阶段使用时,可以ngx.timer.at API 创建一个零延迟的timer,在timer中去处理。
    • 遇到一些高延迟的函数,因为定时调用是在后台运行,并且他们的执行不会增加任何客户端的响应时长
    local function save_message(premature)
        ngx.sleep(5)
        local file = assert(io.open('/tmp/test.log','a+'))
        file:write(string.format("timer=====> %s %s
    ", ngx.time(), "in timer"))
        file:close()
    end
    
    local file = assert(io.open('/tmp/test.log','a+'))
    file:write(string.format("out tomer 1=====> %s %s
    ", ngx.time(), "out timer 1"))
    file:close()
    ngx.sleep(5)
    local file = assert(io.open('/tmp/test.log','a+'))
    file:write(string.format("out tomer 2=====> %s %s
    ", ngx.time(), "out timer 2"))
    file:close()
    --ngx.sleep(5)
    local ok, err = ngx.timer.at(0, save_message)
    if not ok then
        ngx.log(ngx.ERR, "[blm-metric] failed to create timer: ", err)
    end
    
    ngx.say("success")
    

    结果将在5秒后返回,查看日志,每隔5秒分别打印出三次的结果,

  • 相关阅读:
    招行面试
    今日头条面试[教育岗]
    四方精创 面试
    ArrayList 源码
    redis缓存,穿透,击穿,雪崩
    hashMap
    集合整理
    阿里CBU技术部一面
    网安面试
    php递归获取顶级父类id
  • 原文地址:https://www.cnblogs.com/mentalidade/p/8150849.html
Copyright © 2020-2023  润新知