[Lua] 設定 HTTP 連線時的逾時秒數 (timeout)
最近在用下面的 Lua 程式,
測試某個網站是否正常運作:
local http = require("socket.http")
local res, http_code, response_headers = http.request{
url = site_info["url"] .. "?" .. os.time(),
method = site_info["method"]
}
平常網站正常的話,程式運作正常。
網站如果很快速的傳回 HTTP 500 Internal Error 時,也可以很快取得錯誤。
但是,如果網站遲遲不回覆的話,那個 http.request() 就會一直回不來…
查了一下,我們可以用 socket.tcp.settimeout() 的方式,
來設定 HTTP 連線的逾時秒數。
程式如下,基本上就是指定 create 這個給 http.request() 的參數,
讓它回傳一個設定好逾時時間的 socket:
local socket = require "socket"
local res, http_code, response_headers = http.request{
url = site_info["url"] .. "?" .. os.time(),
method = site_info["method"],
create = function()
local req_sock = socket.tcp()
req_sock:settimeout(15)
return req_sock
end
}
這樣,網站如果在 15 秒內沒有回傳任何資料的話,
http.request() 函式就會返回囉~
參考資料:lua http socket timeout – Stack Overflow
(本頁面已被瀏覽過 968 次)