发现经常有”超时“的错误信息,如/usr/lib/ruby/1.8/timeout.rb:54:in `rbuf_fill': execution expired (Timeout::Error),恩,应该是网络不稳定或者是服务器响应太慢的结果,需要捕获下这个异常并做些处理,记录如下:

需要注意的是,Timeout::Error不是StandardError的子类, 而是继承至 Interrupt class,所以捕获的时候,需要格外注意,演示如下:

require 'net/pop3'
begin
Net::POP3.auth_only(@server, @port, @username, @password)
rescue => e
write_error_to_logfile(e)
do_something_sensible
end

看上面的这段代码,当POP3服务器不能及时响应的时候,所触发的异常并不能被下面捕获到,原因就是上面说的,再看正确的处理代码:

require 'net/pop3'
begin
Net::POP3.auth_only(@server, @port, @username, @password)
rescue => e
write_error_to_logfile(e)
do_something_sensible
rescue Timeout::Error => e
write_error_to_logfile(e)
do_something_sensible_for_timeout
end

这段代码可以正常工作,并按照我们的意愿来处理了。

如果您知道对方的服务器会比较慢的响应,或者你知道网络状态不好,你可以单独设置这个TimeOut的时间,代码如下:

require 'timeout'   

...
...
begin
timeout(60) do
resp, body=3Dh.get('/index.html')
puts body
end
rescue TimeoutError
puts "Timed Out"
end

或者这样:(来源:http://textsnippets.com/posts/show/868)

http = Net::HTTP.new(url.host, url.port)
http.read_timeout=time_out 转自 http://hlee.iteye.com/blog/353732

rails timeout 异常的更多相关文章

  1. 使用StackExchange.Redis客户端进行Redis访问出现的Timeout异常排查

    问题产生 这两天业务系统在redis的使用过程中,当并行客户端数量达到200+之后,产生了大量timeout异常,典型的异常信息如下: Timeout performing HVALS Parser2 ...

  2. 504 Gateway Timeout 异常

    生产销售系统出现 504 Gateway Timeout 异常,其实就是服务器响应太慢导致nginx带来超时,先不说服务端慢的优化问题:只是单纯的解决504.到网上发现了一篇文章fix it Add ...

  3. pip install 报SSL异常和timeout异常

    在安装pip3 install virtualenv时报了SSL异常 如图 pip is configured with locations that require TLS/SSL, however ...

  4. RocketMQ的invokeSync call timeout异常的解决办法

    缘起 在RocketMQ客户端的DefaultMQPushConsumer的start方法被执行时,时不时会报出invokeSync call timeout异常,如下: Caused by: jav ...

  5. 关于No ManagedConnections available within configured blocking timeout异常的解决

    最近由于系统和业务重构需要,需要把线上1亿数据迁移到新库,由于业务变更,新表老表结构有变化,没法直接用dba dump的方式,需要自己写转换程序迁移.今天在调试的时候,碰到一个蛋疼的问题,就是一开始查 ...

  6. java读取redis的timeout异常

    http://blog.csdn.net/shuaiokshuai/article/details/23266091 FIFO Fist-in Fisrt-out 先进先出

  7. python中Requests库错误和异常

    主要有以下四种: 1.Requests抛出一个ConnectionError异常,原因为网络问题(如DNS查询失败.拒接连接等错误) 2.Response.raise_for_status()抛出一个 ...

  8. com.mysql.jdbc.exceptions.jdbc4.CommunicationsException/com.atomikos.datasource.ResourceException异常解决

    tomcat+mysql部署,每天早晨第一次访问web项目,出现mysql的连接timeout异常:com.mysql.jdbc.exceptions.jdbc4.CommunicationsExce ...

  9. Jedis timeout

    处理Jedis timeout 异常 Jedis rClient = new Jedis("localhost"); 解决步骤 关闭linux防火墙 systemctl stop ...

随机推荐

  1. spring security 一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架

    Spring Security是一个能够为基于Spring的企业应用系统提供声明式的安全访问控制解决方案的安全框架.它提供了一组可以在Spring应用上下文中 配置的Bean,充分利用了Spring ...

  2. swfupload 上传报 security error # 2049 (security) 安全错误问题

    老外给出类似理由: 大致是说这个是flash播放器自身组件安全策略问题, 禁止跨域上传的. I believe this is due to the Flash Player's "same ...

  3. linux 下启动SVN服务

    先转到SVN的安装目录,比如,你安装在/home/svn 下面. 然后转到bin目录下,在这里可以看见一个叫svnserve的文件,我们需要用这个来启动SVN服务. 试一下svnserve --hel ...

  4. C++ 4种强制类型转换

    C++的四种强制类型转换为:static_cast.const_cast.reinterpret_cast和dynamic_cast 类型转换的一般形式:cast-name(expression); ...

  5. Java反射小结

    一.什么是反射? 在运行状态中,对于任意一个类,都能够获取到这个类的所有属性和方法,对于任意一个对象,都能够调用它的任意一个方法和属性(包括私有的方法和属性),这种动态获取的信息以及动态调用对象的方法 ...

  6. 【Selenium】之谷歌、IE、火狐浏览器各个版本的浏览器驱动下载地址

    地址:chromedriver官网下载地址: http://chromedriver.storage.googleapis.com/index.html(失效了) http://npm.taobao. ...

  7. PHP输出javascript,alert中文乱码解决办法

    echo '<html><head><meta http-equiv="Content-Type" content="text/html; ...

  8. CH Round #55 - Streaming #6 (NOIP模拟赛day2)(被虐哭)

    http://ch.ezoj.tk/contest/CH%20Round%20%2355%20-%20Streaming%20%236%20%28NOIP%E6%A8%A1%E6%8B%9F%E8%B ...

  9. vue-cli 打包(npm run build) 出现 ERROR in xx..js from UglifyJs Unexpected token: punc (()

    之前打包还没问题,这次就报错了,后来发现原来是少了 .babelrc 文件, 网上找了好多方法都不行,后来看了之前的项目,原来是少了 .babelrc  文件, 只要在根目录下建立这个文件, 文件内容 ...

  10. http协议详解(2)

    HTTP报文是面向文本的,报文中的每一个字段都是一些ASCII码串,各个字段的长度是不确定的.HTTP有两类报文:请求报文和响应报文. HTTP请求报文 一个HTTP请求报文由请求行(request ...