Rescue_from 不会从视图或助手中拯救 Timeout::Error

2024-02-05

我的应用程序控制器中有一个 around_filter,用于将所有操作封装在超时块中,以便操作在达到 30 秒 Heroku 限制之前失败。我还有一个rescue_from Timeout::Error 来彻底挽救这些超时。不幸的是,rescue_from 仅在某些时候有效。

如果在控制器内执行时发生超时,它可以正常工作,但如果超时发生在视图或助手内,则无法救援。

Timeout::Error 继承自 Interrupt 和 SignalException,两者都无法正确救援。但是,拯救异常本身does在视图和助手中正确救援。

around_filter :timeout
rescue_from Timeout::Error, :with => :timeout_rescue

def timeout
  Timeout::timeout(10){
    yield 
  }
end

def timeout_rescue
  # Rescued
end

还有其他方法可以挽救 Timeout::Error 使其正常工作吗?


我遇到了同样的问题。我正在使用 Rails 3 + Rack::Timeout 并尝试在 ApplicationController 中救援_from。

我最终使用了这个...

rescue_from Exception do |exception|
  if exception.is_a?(Timeout::Error) || /execution expired/ =~ exception.message
    # rescued from timeout error
  end
  raise
end

UPDATE

我修补了机架超时 gem 以正确返回 Timeout::Error。这是一个线程问题。官方宝石已更新:https://github.com/kch/rack-timeout https://github.com/kch/rack-timeout

新的首选方法如下。一般来说,从异常中拯救并不是一个好主意,如果可能的话应该避免。

class ApplicationController < ActionController::Base
  rescue_from Timeout::Error, with: :handle_timeout

  def handle_timeout(exception)
    # handle timeout error
  end
end
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Rescue_from 不会从视图或助手中拯救 Timeout::Error 的相关文章

随机推荐

  • 控制 grid.layout 中的内部图形边距

    我正在尝试在网格中绘制多个格子图 为此 我使用以下代码 plot lt xyplot 1 10 1 10 page layout lt grid layout nrow 2 ncol 1 widths unit c 1 null heigh
  • 在自定义适配器的列表视图项中加载不同的图像

    您好 如果我在解释问题时有误 请原谅我 我有一个自定义基本适配器 其中有两个 imageView 和两个 TextView 我使用异步任务从 URL 设置图像 它会设置图像 但会自动再次更改图像 下面是适配器的代码 public class
  • 使用声明性命令创建 Kubernetes Pod 时出现 ErrImagePull:401 Unauthorized

    我正在开展一个实验室 展示如何在 IBM Cloud 上设置 Kubernetes 和 CLI 我有 Kubernetes 集群设置和容器注册表 我在 CLI 上登录到 IBM Cloud 和 Container Registry 镜像已创
  • 加密密钥未经授权用于持续部署 Travis → Heroku

    我正在尝试配置币管家 http www coinsmanager com 以便阿尔法版本 http alpha coinsmanager com Travis 持续集成后自动部署 这是我们的 travis yml file language
  • 如何获取颤振中列表视图滚动的索引号?

    我在 flutter 应用程序中使用下面的列表视图生成器代码 我需要在滚动时获取列表中项目的索引 就像函数一样onPageChanged 使用时PageView Builder return ListView builder itemCou
  • 在 MVC 控制器中处理 DbContext,哪种方式“更好”?

    在 MVC 5 中 脚手架代码将类似于 public class MyController Controller private MyContext db new MyContext protected override void Disp
  • 使用fences清理命令缓冲区并同时同步交换链图像

    假设我有一个交换链 其中包括n图像和我允许k 飞行中的帧 我确保之间的正确同步vkAcquireNextImageKHR vkQueueSubmit and vkQueuePresentKHR通过一组信号量imageAvailableSem
  • 更改 MGTwitterEngine 的委托

    我已经使用 MGTwitterEngine 的扩展类通过 xAuth 设置并成功登录 我的问题是如果我想将其传递给另一个视图控制器 我如何更改委托类 因为它是某种弱引用 interface MGTwitterEngine NSObject
  • iOS swift 流媒体应用程序无法在后台模式下播放音乐

    我的应用程序运行良好 但一旦屏幕安全打开或在 iPhone 上执行其他操作 流就会停止 我激活了后台模式 正在播放音频 但这没有帮助 这是我的 ViewController swift import UIKit import MediaPl
  • HTML 5 是否需要 ``

    当编写 html 5 文档类型时 您是否应该包含就像您之前使用 HTML4 doctype 时所做的那样 还是应该使用不同的 xhtml HTML5 不需要使用xmlns属性 因为它是 XHTML 特有的 这意味着甚至 HTML 4 也不使
  • PHP - 魔术引号 gpc 和 stripslashes 问题

    好的 我的托管公司有magic quotes gpc turned ON我使用以下代码编写了我的 PHP 脚本stripslashes 在此准备过程中 但现在托管公司表示将转向magic quotes gpc关闭 我想知道现在我的数据会发生
  • 类型同义词对类型类的实例有什么影响? GHC 中的 TypeSynonymInstances 编译指示有何作用?

    我正在阅读现实世界哈斯克尔第151页 我盯着下面这段话看了一个多小时 回想一下 字符串是以下的同义词 Char 它又是类型 a 其中 Char 替换为类型 参数a 根据 Haskell 98 的 规则 我们不允许提供 在以下情况下用类型代替
  • 用 .NET 编写的服务可以自行终止吗?

    我有一个用 C 编写的服务应用程序 在某些情况下 我希望它自行终止 这会在服务运行一段时间后发生 因此在 OnStart 事件中不会发生这种情况 到目前为止我读到的所有内容都表明终止服务的唯一安全方法是通过服务控制管理器 我的服务作为本地服
  • 单元测试实体框架

    我刚刚开始使用 Entity Framework v4 和 Linq 我有一个实体数据模型 它是从数据库生成的 然后 我实现了存储库类 以便实现我的实体的业务逻辑 它们包含用于与实体 数据库交互的 LINQ 查询 在不访问数据库的情况下对我
  • delphi 对象赋值与:=

    有人可以解释一下以下之间的区别 1 newObj TMyObject Create newObj Assign oldObj and 2 newObj oldObj 2 确实newObj and oldObj引用同一个对象 抱歉 如果之前已
  • acts_as_taggable_on 标签添加两次

    我有一个 RoR 应用程序 允许用户标记其集合中的项目 我使用 tag it js Jquery 插件并使用 Ajax 调用在 ItemsController 中添加和删除标签 我的问题是每个标签添加两次 因此当我执行 item tags
  • CSS中不同高度的块的垂直对齐[重复]

    这个问题在这里已经有答案了 我试图达到类似的效果this https blaskdemo wordpress com 也就是说 我有一些块 这里 articles 具有相同的宽度但可以具有不同的高度 并且我希望它们位于其上邻居的旁边 当内联
  • 如何在 WCF 数据服务中获得内部联接

    假设我有 2 个表 table1 和 table2 具有共享密钥 id 如果我想使用 sql 对这两个表进行内部联接 我会做类似的事情 select id x y z from table1 inner join table2 on tab
  • play 2.4 中的插件、依赖项、模块和子项目有什么区别?

    我是 playframework 的新手 刚刚学习 我对依赖项 模块 插件和子项目有点困惑 它们有何不同 这是我的理解 可能是错的 依赖项 是播放应用程序运行所需的所有库 子项目 是另一个父应用程序内的播放应用程序 不确定 插件 和 模块
  • Rescue_from 不会从视图或助手中拯救 Timeout::Error

    我的应用程序控制器中有一个 around filter 用于将所有操作封装在超时块中 以便操作在达到 30 秒 Heroku 限制之前失败 我还有一个rescue from Timeout Error 来彻底挽救这些超时 不幸的是 resc