好的,我正在检查我的服务器是否正在运行.只要端口正确,它就可以工作.但是,如果我将端口设置为一个我知道并不是例外,它完全会跳过我的常规操作.以下示例运行正常.但是将端口号更改为99,它会完全跳过if.我认为它应该属于其他部分.
url = URI.parse("http://www.google.com/")
url.port = 80
req = Net::HTTP.new(url.host, url.port)
res = req.request_head(url.path)
if res.code == "200"
#do something
else
#do something else
end
Run Code Online (Sandbox Code Playgroud)
你应该提供超时和救援,SocketError并Timeout::Error:
require "net/http"
def check_server(server, port)
begin
http = Net::HTTP.start(server, port, {open_timeout: 5, read_timeout: 5})
begin
response = http.head("/")
if response.code == "200"
# everything fine
else
# unexpected status code
end
rescue Timeout::Error
# timeout reading from server
end
rescue Timeout::Error
# timeout connecting to server
rescue SocketError
# unknown server
end
end
Run Code Online (Sandbox Code Playgroud)
如果您只想检查服务器是否已启动,可以简化:
require "net/http"
def up?(server, port)
http = Net::HTTP.start(server, port, {open_timeout: 5, read_timeout: 5})
response = http.head("/")
response.code == "200"
rescue Timeout::Error, SocketError
false
end
Run Code Online (Sandbox Code Playgroud)
它返回true,如果/返回一个200状态码,false否则,即对于其他状态码,超时和典型错误条件.
| 归档时间: |
|
| 查看次数: |
2264 次 |
| 最近记录: |