检查外部API是否在线/离线

时间:2015-06-04 14:21:10

标签: ruby-on-rails ruby

我想了解如何检查外部API是否可用。

在我的控制器中,我正在调用一些API,如果它们不可用,我不想调用它们,否则会在我的应用程序中抛出错误。

我想我必须每隔X秒运行一次,检查API是否可用。如果她不是,我有一个变量,我设置为假。例如。

这对你来说是最好的方式吗?

谢谢,

2 个答案:

答案 0 :(得分:3)

我最近做了类似的事情,测试我们的一些合作伙伴网站是否已经上线了。我这样做了

#replace this with the access point url of the api
url = "http://www.google.com"
status = `curl -sL -w "%{http_code} %{url_effective}\\n" "#{url}" -o /dev/null`.to_i

这将返回响应状态代码,如果api启动并运行,则为200;如果不是,则返回404(或其他一些错误)。

答案 1 :(得分:2)

您描述的方式在很多时候都会起作用,但是在API关闭和您的作业运行之间仍然存在一个窗口,您的控制器可能会尝试访问API。更安全的方法是使用更少的移动部件来捕获控制器中的网络异常(ETIMEDOUT等)。