openresty 请求断开问题,openresty请求断开
openresty 请求断开问题,openresty请求断开
有时候,客户端已经断开连接了,但是openresty并未捕获该事件,导致后端请求仍在进行。
使用ngx.on_abort()
可以捕获客户端退出事件,在调用自定义函数来进行扫尾工作。
先为nginx添加lua_check_client_abort on;
(http, server, location) 配置
When
lua_check_client_abort
is set to off (which is the default), then this function call will always return the error message “lua_check_client_abort is off”.
local function my_cleanup()
-- custom cleanup work goes here, like cancelling a pending DB transaction
-- now abort all the "light threads" running in the current request handler
ngx.exit(499)
end
local ok, err = ngx.on_abort(my_cleanup)
if not ok then
ngx.log(ngx.ERR, "failed to register the on_abort callback: ", err)
ngx.exit(500)
end
-- doing sth here.
According to the current implementation, this function can only be called once in a single request handler; subsequent calls will return the error message “duplicate call”.
函数只在单次请求中被调用一次。
评论暂时关闭