`

Rails Timeout 异常处理

阅读更多
发现经常有”超时“的错误信息,如/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   




分享到:
评论
1 楼 uglyduck^swam 2010-04-21  
这些代码的路径是什么?

相关推荐

    rails_exception_handler:Ruby on Rails的异常处理

    Rails异常处理程序 从版本1升级? 这是Rails的灵活异常处理程序,适用于希望创建自己的错误跟踪服务的人员。 它面向经验丰富的Rails开发人员,这些开发人员不仅要管理几个Rails应用程序,而且还要管理多个应用程序。...

    rack-timeout-puma:中止在 Puma 服务器上花费太长时间的请求

    基本上,我们捕获 Rack::Timeout 引发的 Exception 并将其转换为 StandardError 以便 Puma 工作人员不会被杀死。 有关问题的更好描述,请参阅 。 基本用法 Rails 应用程序 # Gemfile gem "rack-timeout-puma" 这...

    Ruby on Rails:Rails中的表单处理.docx

    Ruby on Rails:Rails中的表单处理.docx

    rails敏捷开发的购物车系统

    在本文中,我们将深入探讨如何使用Rails敏捷开发技术构建一个购物车系统,特别是在参考《rails敏捷开发第四版》中的示例。Rails 3.2.6是本文的基础框架,它是一个强大的Ruby Web应用程序框架,以其MVC(模型-视图-...

    Ruby-Rails的异常通知插件

    在Ruby on Rails开发中,错误处理是至关重要的一个环节,因为它可以帮助开发者及时发现并修复问题,从而保持应用程序的稳定运行。"Ruby-Rails的异常通知插件"正是为了解决这个问题而诞生的。Exception Notification...

    rack-timeout:中止要求时间太长的请求

    您可以通过设置RACK_TIMEOUT_SERVICE_TIMEOUT环境变量来进行修改。 还有一些其他设置,请继续阅读以了解详细信息。 Rack :: Timeout不能解决长时间运行的请求问题,它是一种调试和修复工具。 应用程序开发人员应...

    rails指南 中文版

    9. **ActiveJob**:Rails的后台任务处理框架,可以配合各种队列服务(如Resque、Sidekiq等)处理异步任务。 10. **Rails Console**:提供了一个交互式的命令行工具,用于检查和调试应用,执行Ruby代码,以及与...

    Rails101_by_rails4.0

    此外,书中还介绍了一些Rails中的高级概念,如Strong Parameters(强参数),它在Rails 4.0版本中引入,用于解决之前版本中的参数篡改问题,从而帮助开发者安全地处理外部提交的数据。 通过一系列的教学内容,包括...

    Rails项目源代码

    Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...

    Rails 101 入门电子书

    - 实现逻辑处理。 #### 十二、练习作业5-实作简单的Account后台机制 - **目标**: - 构建用户账户后台。 - **实现过程**: - 显示用户的Group列表。 - 显示用户的Post列表。 - 排序优化: 按发布时间或热度排序...

    rails-timeago:时间标记的Rails助手,可以与jQuery Timeago插件一起使用

    rails-timeago提供了一个timeago_tag助手来创建可用于插件的时间标签。 安装 将此行添加到您的应用程序的Gemfile : gem 'rails-timeago' , '~> 2.0' 然后执行: $ bundle 或将其自己安装为: $ gem install ...

    Ruby和Rails高效的Kafka处理框架_Ruby_下载.zip

    3. **错误处理和恢复**:框架提供了内置的错误处理机制,确保即使在处理过程中出现异常,也能优雅地处理消息,避免数据丢失。 4. **线程和进程安全**:Karafka支持多线程和多进程消费,能够充分利用服务器资源,...

    关于rails 3.1 cucumber-rails 1.2.0

    Asset Pipeline优化了前端资源的处理,Cucumber-Rails则提供了强大的测试工具,确保代码的质量和功能符合业务需求。这样的组合对于保持代码的整洁、提高团队协作效率和降低维护成本具有重要意义。 总的来说,了解和...

    rails2-sample

    此外,Rails还内置了许多实用功能,如ActiveRecord(用于数据库交互)、Action View(用于页面渲染)和Action Controller(用于处理用户请求),这些都使得开发者能够快速构建出功能丰富的Web应用程序。 #### 2. ...

    Rails

    标题 "Rails" 指的是 Ruby on Rails,一个开源的Web应用程序框架,它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式。Rails由David Heinemeier Hansson在2004年创建,其设计理念是强调代码的简洁性、DRY...

    rails本地安装包完整版

    1. **activesupport-2.1.0.gem**:ActiveSupport是Rails的一个重要库,提供了许多实用的工具和方法,如时间区处理、字符串格式化、数组和哈希操作等。它也包含了一些核心的Ruby扩展,帮助开发者编写更简洁、更具表达...

    rails2.3.2

    1. Active Record:这是 Rails 的 ORM(对象关系映射)层,负责处理数据库交互。在这一版本中,Active Record 提供了更强大的查询接口,包括 SQL 方法的集成和更灵活的关系管理。 2. Action Pack:包含了 MVC 架构...

    使用Aptana+Rails开发Rails Web应用(中文)

    模型负责数据操作,视图用于展示用户界面,而控制器则作为两者之间的桥梁,处理用户请求并调用模型方法。在Aptana中,你可以直接在这些目录中编写相应的Ruby代码,IDE会提供代码补全和错误检查等功能。 例如,要在...

    Rails相关电子书汇总

    8. **ActiveSupport**:包含许多实用的工具类和模块,如时间戳处理、字符串处理等,它们被广泛地应用于Rails应用中。 9. **测试驱动开发(TDD)和集成测试**:Rails鼓励开发者使用Test::Unit或Rspec进行测试,确保...

    rails 项目起步示例

    Rails是Ruby语言的一个著名Web开发...随着对Rails框架的深入理解,你可以逐步构建出功能丰富的购物系统,包括商品浏览、购物车、订单处理等功能。在实际操作中,参考Rails的官方文档和社区资源将是提升技能的好方法。

Global site tag (gtag.js) - Google Analytics