[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
(本頁面已被瀏覽過 903 次)