我继承了一些通过 HTTP 请求/响应与服务器通信的 Lua 代码。这已经在该领域运行了几年,但我最近注意到来自系统的 HTTP 请求的超时有些挂起。每个单独的消息都可以定义自己的超时,但如果没有设置,则使用 30 秒的默认超时。几周前,我在一个系统上注意到,在它恢复并继续处理之前,有大约 15 分钟的超时挂起。但我目前正在查看一个在 30 秒超时后挂起超过 3 小时的系统。这是请求的设置:
local socket = require "socket"
local http = require "socket.http"
local ltn12 = require "ltn12"
local ssl = require "ssl"
local try = socket.try
local protect = socket.protect
...
function serverapi.http_request(request, timeout)
... (local variable setup and logging)
socket.TIMEOUT = timeout
socket.http.TIMEOUT = timeout
result, status_code, content = socket.http.request {
url = request.url,
method = request.method,
headers = request.header,
source = ltn12.source.string(request_body),
sink = ltn12.sink.table(response_body),
}
... (receive response and process)
我应该注意到,就它们所挂起的消息类型而言,挂起是不稳定的。因此,它与一条消息不一致。而且,正如我所说,这已经在该领域部署和运行了几年。
有人在这里有什么想法吗...?即使这只是帮助调试正在发生的事情的一种方式。我什至不知道如何在发送请求并等待超时后进行任何类型的登录。
谢谢