从 Sidekiq 作业中获取错误消息

2023-12-26

我想从 sidekiq 作业中获取异常错误消息。当我将 back_trace 选项设置为 true 时,它​​会重试我的工作,但我想在出现错误时退出工作并获取错误消息。

如果我发现该过程成功或失败就足够了。

def perform(text)
    begin
      fail StandardError, 'Error!' 
    rescue
      fail 'EEE' # I want to get this error when call job
    end
end
# call
NormalJob.perform_async('test')
# I want to get error here after call

如果我是你,我会尝试宝石sidekiq 状态 https://github.com/utgarda/sidekiq-status。它有几个选项,在这种情况下可能会有所帮助:

You can 检索状态您的工人:

job_id = MyJob.perform_async(*args)
# :queued, :working, :complete or :failed , nil after expiry (30 minutes)
status = Sidekiq::Status::status(job_id)
Sidekiq::Status::queued?   job_id
Sidekiq::Status::working?  job_id
Sidekiq::Status::complete? job_id
Sidekiq::Status::failed?   job_id

您还可以选择Tracking progress, saving and retrieveing data associated with job

class MyJob
  include Sidekiq::Worker
  include Sidekiq::Status::Worker # Important!

  def perform(*args)
    # your code goes here

    # the common idiom to track progress of your task
    total 100 # by default
    at 5, "Almost done"

    # a way to associate data with your job
    store vino: 'veritas'

    # a way of retrieving said data
    # remember that retrieved data is always is String|nil
    vino = retrieve :vino
  end
end

job_id = MyJob.perform_async(*args)
data = Sidekiq::Status::get_all job_id
data # => {status: 'complete', update_time: 1360006573, vino: 'veritas'}
Sidekiq::Status::get     job_id, :vino #=> 'veritas'
Sidekiq::Status::at      job_id #=> 5
Sidekiq::Status::total   job_id #=> 100
Sidekiq::Status::message job_id #=> "Almost done"
Sidekiq::Status::pct_complete job_id #=> 5

另一种选择是使用 sidekiq批次状态 https://github.com/mperham/sidekiq/wiki/Batches#status

这就是批次允许您做的事情!

batch = Sidekiq::Batch.new
batch.description = "Batch description (this is optional)"
batch.notify(:email, :to => '[email protected] /cdn-cgi/l/email-protection')
batch.jobs do
  rows.each { |row| RowWorker.perform_async(row) }
end
puts "Just started Batch #{batch.bid}"

b = Sidekiq::Batch.new(bid) # bid is a method on Sidekiq::Worker that gives access to the Batch ID associated to the job.
b.jobs do
  SomeWorker.perform_async(1)
  sleep 1
  # Uh oh, Sidekiq has finished all outstanding batch jobs
  # and fires the complete message!
  SomeWorker.perform_async(2)
end

status = Sidekiq::Batch::Status.new(bid)
status.total # jobs in the batch => 98
status.failures # failed jobs so far => 5
status.pending # jobs which have not succeeded yet => 17
status.created_at # => 2012-09-04 21:15:05 -0700
status.complete? # if all jobs have executed at least once => false
status.join # blocks until the batch is considered complete, note that some jobs might have failed
status.failure_info # an array of failed jobs
status.data # a hash of data about the batch which can easily be converted to JSON for javascript usage

开箱即用

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

从 Sidekiq 作业中获取错误消息 的相关文章

  • Partial、Layout、Template 渲染问题

    情况 因此 当我访问页面时 我希望能够将布局应用到部分 我想要三个具有相同布局的部分 现在 我正在尝试使用以下命令来执行此操作 where shared services essay是这样的 p blah p div blah div
  • Rails f.check_box 设置选中/未选中值

    所以我在 Rails 中得到了一个带有复选框的表单助手 我希望该复选框在选中或取消选中时具有 thatvalue 或 thisvalue 值 我还没有找到如何设置它的地方 f check box field 我发现了类似的东西 但它不起作用
  • 在代码中的其他地方设计渲染符号=>向上/形式部分

    我刚刚开始使用 Devise 和 Rails3 我已经完成了身份验证并正在工作并了解基础知识 截至目前 在代表我的主页 首页的主控制器中 我有两个链接 一个链接到 注册 gt sign up 另一个链接根据登录 注销 gt sign in
  • 如何使用 ruby​​ 的循环和 haml 创建表?

    我正在尝试制作一个如下所示的 html 表 1 2 3 4 5 1 2 3 4 5 1 2 3 4 5 我的数据结构是这样的 f ary 1 250 这是我的哈姆尔代码 table border gt 1 tbody tr cnt 0 f
  • 使用Rails UJS,如何从函数提交远程表单

    我正在使用Rails UJS 我有一个表单设置来进行远程提交 如下所示
  • 用于 RESTful 轨道应用程序的简单面包屑

    是否有任何辅助方法 除了默认 Rails 面包屑导航 http wiki rubyonrails org rails pages Breadcrumbs 为特定页面动态生成面包屑导航 而无需在 RESTful 应用程序中传递琐碎的参数 也就
  • 数据库分片和 Rails

    在 Rails 中处理分片数据库的最佳方法是什么 分片应该在应用层 活动记录层 数据库驱动层 代理层还是其他层处理 各自的优点和缺点是什么 FiveRuns 有一个名为的 gem数据结构 https github com bpot data
  • 带有附加参数的redirect_to

    我是一个菜鸟 redirect to users url notice Succeed p p 然后我添加一个message它失败了 redirect to users url notice Succeed message test p p
  • Rails 3:使用 Simple_form 如何创建一个向specialities#create 发布帖子的表单?

    如何使用 Simple form 创建一个向specialities create 发布帖子的表单 我试过这个
  • RSpec 请求规范发布一个空数组

    我目前正在 Rails 中开发 API 端点 如果我需要的数据无效 我想确保端点响应具有正确的错误状态 我需要一个 id 数组 无效值之一是空数组 Valid vendor district ids 2 4 5 6 Invalid vend
  • 回形针不支持 .doc 文件

    在 Rails 4 0 2 中 我使用回形针 gem 上传文件 但它不支持 doc 文件 在文件上传字段下方 显示一条错误消息 扩展名与其内容不匹配 在模型中 检查内容类型的验证如下 validates attachment content
  • 自定义通用 Rails 错误消息

    我们的 Rails 应用程序被设计为链接到多个客户端数据库的单个代码库 根据子域 应用程序确定要连接到哪个数据库 我们使用液体模板为每个客户定制演示文稿 我们无法为每个客户定制通用的 我们很抱歉 出了点问题 消息 谁能推荐一种方法让我们能够
  • 如何在服务调用后检查 rspec 中的数组更改?

    目标很简单 例如我们有一个数组 name ghost state rejected name donkey state rejected 运行服务调用后UpdateAllUsers 这会将所有用户更改为 accepted name ghos
  • Rails 3.1+ 的 Jasmine 与 Mocha JavaScript 测试 [已关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我对茉莉花有经验并且非常喜欢它 有谁有 Jasmine 和 Mocha 的经验 特别是 Rails 的经验吗 我想知道是否值得转用 我已经在 J
  • Rails 从 OrdersController 更新用户模型的属性

    这是我的代码 订单控制器类 def create order Order new params order if order purchase work GATEWAY store credit card options result wo
  • 如何在生产服务器中运行 sidekiq?

    我有一个带有apache passenger的服务器 我将如何奔跑sidekiq在生产中 运行所需的任何配置 bundle exec sidekiq Thanks bundle exec sidekiq d L log sidekiq lo
  • 带回形针、导轨的水印图像 4

    我一直在尝试按照中列出的答案向我的图像添加水印带有回形针的水印 https stackoverflow com questions 13517757 watermark with paperclip 水印 rb module Papercl
  • 如何使用 Ruby on Rails 3 检查 HTTP 请求的“Content-Length”字段?

    我正在使用 Ruby on Rails 3 在我的视图文件中我有以下代码 为了避免服务器过载 我会在服务器接收上传文件之前检查上传文件的大小 这是因为 按下表单的提交按钮 服务器会先完整接收文件 然后再检查文件 我知道一个HTTP 请求有标
  • 用于验证目的的动态查找方法

    我正在使用 Ruby on Rails 3 0 7 我想在运行时查找一些记录以进行验证 但为该查找方法传递 设置一个值 也就是说 在我的班级中 我有以下内容 class Group lt lt ActiveRecord Base valid
  • rspec 中的模拟方法链

    有一系列方法可以获得user目的 我试图模拟以下内容以返回user in my Factory Girl current user AuthorizeApiRequest call request headers result 我可以模拟该

随机推荐

  • 如何正确hook WM_COMMAND

    我正在尝试在 mfc 窗口中挂钩按钮单击 我使用了 WM COMMAND 和 WM NOTIFY 为了测试 如果单击按钮 挂钩必须创建一个消息框 问题是它对按钮点击没有反应 以下是响应 WM COMMAND 和 WM NOTIFY 的代码
  • 典型相关分析

    我刚刚开始在 Matlab 中使用 CCA 我有两个向量X and Y维度的60x1920 and 60x1536样本数为60和不同向量集中的变量是1920 and 1536分别 我想知道如何进行 CCA 将它们减少到子空间 然后进行特征匹
  • MVC 将操作放入最合适的正确控制器中

    我只是想知道在某些情况下决定在哪里创建操作 视图的最佳实践方法是什么 If User有很多Video 创建操作 视图以显示用户视频的最佳位置在哪里 那么 在用户帐户页面的 我的视频 链接中 您是否 只需创建一个用户 我的视频行动和看法 cr
  • 从肥皂信封 zeep 获取数据

    我正在尝试在 python 库的帮助下使用 wsdlzeep https github com mvantellingen python zeep 它工作正常 但我不知道如何从请求中获取数据 My code encoding utf 8 f
  • 最小高度不适用于身体

    min height 不适用于 body html 吗 body html min height 100 绝对没有完成任何事情 firebug 报告正文 html 标签高度根本没有改变 首先 声明一个文档类型 以便您符合标准 如果您还没有这
  • 64位MFC版本中的访问冲突异常

    我正在尝试将 32 位应用程序移植到 64 位 计算似乎运行正确 但我无法正确配置视图 我在 W7 x64 机器上的 VS2005 中使用 MFC C 和 OpenGL Intel 10 0 027 编译器 发生崩溃时 我收到以下消息 3D
  • 跨实现确定性数组#shuffle

    可以将随机数生成器传递给Array shuffle这使得洗牌具有确定性 例如 在 MRI 1 9 3p327 中 1 2 3 4 shuffle random Random new 0 gt 1 2 4 3 1 2 3 4 shuffle
  • 使用 BeautifulSoup 抓取一系列表

    我正在尝试学习网络抓取和Python 以及相关的编程 并且发现了BeautifulSoup库 它似乎提供了很多可能性 我试图找出如何最好地从此页面提取相关信息 http www aidn org au Industry ViewCompan
  • 使用 AutoIt 循环解析 CSV 文件的所有行

    我有以下代码来读取包含两行数据的 csv 文件 我不知道这是怎么回事 如何改进它以读取包含两行数据的 csv 文件 include
  • 如何在Powerpoint VBA中运行宏“OnEnterSlide”或“OnLeaveSlide”?

    是否有某种事件允许在进入幻灯片或离开幻灯片时运行宏 SlideShowNextSlide 或 OnSlideShowPageChange 您可以在以下位置找到完整列表 http officeone mvps org vba events v
  • Android Room @Relation 多对多?

    我正在开发一个 Android 应用程序 并在 Android 操作系统中使用新的架构组件 LiveData ViewModel 和 Room 我在 Room 实现中遇到一个关于创建 Relation 的小问题 该 Relation 返回
  • 如何修复“java.sql.SQLException:数据库已关闭”问题

    我的代码说没有错误 但是当我运行该程序时 它会说数据库已关闭 public class main public static void main String args language SQLite String sql SELECT F
  • 用户管理API

    我正在开发一个应用程序套件 用户需要连接到服务器 并根据他们的帐户类型向他们提供一些服务 服务器将运行Linux 您能给我推荐一些用户管理 API 我可以用它来开发服务器程序吗 我所说的用户管理是指用户身份验证和其他相关功能 我更喜欢使用
  • 使用Python读取16位PNG图像文件

    我正在尝试读取以 16 位数据类型编写的 PNG 图像文件 数据应转换为 NumPy 数组 但我不知道如何读取 16位 文件 我尝试使用 PIL 和 SciPy 但它们在加载时将 16 位数据转换为 8 位数据 谁能告诉我如何从 16 位
  • 哪一个更好地处理版本控制? XmlSerializer 与 DataContractSerializer?

    需要序列化一个对象 并且反序列化时程序集版本可能发生变化 此外 对象可能会发生一些变化 XmlSerializer 不存储类型信息 如果对象发生一点变化 它也不会失败 但 XmlSerializer 无法序列化超类中的私有或内部属性 我无法
  • JAX-RS 资源生命周期性能影响

    我知道默认情况下 JAX RS 端点生命周期是每个请求一次 以便可以将请求特定信息注入到实例中 而且我们还可以制作一个端点Singleton的意思每个应用程序一次 其中请求特定信息不能注入到实例中 而是可以注入到请求的方法中 1 所以我想知
  • Struts 2:将不同的 XML 验证文件应用于一个操作方法

    我是 Struts 2 Framework 的新手 我使用 XML 验证文件来验证表单的字段 我的问题是 如何将不同的 XML 验证文件应用于一个操作的方法 我还想对不止一种操作方法使用相同的 XML 验证文件 问 如何将不同的 XML 验
  • GetHashCode() 在不同的服务器上给出不同的结果?

    我像这样声明了 C 代码行 int hashcode apple GetHashCode 在我的计算机 工作计算机和朋友的计算机上 结果是 1657858284 在开发服务器上 结果是 1548091822 有没有办法让我告诉项目始终使 G
  • 如何使用 Spring Data JPA + Spring Web MVC 避免 JSON 序列化中的延迟获取?

    我有一个在 Spring Web MVC 中使用 Spring Data JPA 和 REST 控制器的解决方案 持久性提供者是 Hibernate 持久层是使用 Spring 存储库构建的 并且在 REST 控制器和存储库之间存在一个服务
  • 从 Sidekiq 作业中获取错误消息

    我想从 sidekiq 作业中获取异常错误消息 当我将 back trace 选项设置为 true 时 它 会重试我的工作 但我想在出现错误时退出工作并获取错误消息 如果我发现该过程成功或失败就足够了 def perform text be