从 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 作业中获取错误消息 的相关文章

  • 多重要求和允许强参数rails 4

    在下面的情况下 我尝试使用强参数 我想要求email address password并允许remember me fields 但像下面这样使用它只允许最后一行在方法示例中 在下面的情况下 它只需要params permit rememb
  • 如何使用 Rspec 测试具有嵌套路由的控制器?

    我有 2 个使用轨道脚手架生成器创建的控制器 我希望它们嵌套在一个名为 demo 的文件夹中 所以运行 rails g scaffold demo flows rails g scaffold demo nodes 然后我决定将节点嵌套在流
  • 在 Rails 3 中渲染 Markdown 文本

    我想将 markdown 转换为 html 在我看来我有markdown some text variable 但我得到了错误undefined method markdown I added require BlueCoth 到envir
  • Bundle 说 gem 丢失了 - 但事实并非如此?

    背景 我正在维护contentRuby On Rails 站点 但我确实没有 Rails 的经验 当尝试运行 Rails 服务器时 rails s我明白了 在任何来源中均找不到 activesupport 3 2 0 Run bundle
  • 如何加载页面特定的rails 4 js文件?

    我正在阅读资产管道的 Rails 指南文档 它指出 CoffeeScript 页面特定生成的文件 如果清单上有 require tree 指令 则默认情况下可供用户使用 这对我不起作用我必须包括这个 在特定控制器上 我缺少什么 资产管道会将
  • 将rails_admin 与rails_api 结合使用

    我最初将此发布为Rails api GitHub 上的问题 https github com sferik rails admin issues 2617 但由于不活跃 我现在将其发布在这里 我正在尝试使用rails admin使用 Rai
  • 服务器上的 Rails 会话

    我想让一些 Rails 应用程序在不同的服务器上共享同一个会话 我可以在同一服务器内完成此操作 但不知道是否可以在不同服务器上共享 有人已经做过或者知道怎么做吗 Thanks Use the 数据库会话存储 https github com
  • Rails 安全:完全避免大规模分配

    我倾向于不需要批量分配 http guides rubyonrails org security html mass assignment我的生产代码中的功能 在我的测试代码中 我经常使用它 但在这些情况下我do想要设置任意列 因此 如果在
  • 将查询字符串参数作为表单发布的一部分发送

    有没有办法捕获查询字符串并将其作为表单帖子的一部分发送 我正在使用 Rails 2 3 5 我的用户所在的页面有多个查询字符串参数 在此页面上 他们将提交一份表格 在接收帖子的操作中 我想知道这些查询字符串参数是什么 显然 它们不是作为邮件
  • 带有 git Remote 的 Gem 文件在 Heroku 推送上失败

    我的 gemfile 中有以下行 gem client side validations git gt email protected cdn cgi l email protection Dakuan client side valida
  • 嵌套 has_one 关联的强参数

    我似乎遗漏了一些明显的东西 但我无法允许嵌套的属性has one协会 控制器 def create crossword Crossword new crossword params if crossword save render show
  • 比较 rspec 自定义 ActiveRecord::RecordInvalid 错误消息

    模型中有以下内容 validates uniqueness of title if proc item item item type tag case sensitive false message I18n t errors key va
  • Rails 中的字母分页

    我正在寻找 Rails 的宝石用于字母分页 我希望我可以在结果中找到第一个字母的列表 我的意思是 如果没有以 a 开头的行 我不希望 a 显示在分页链接上 这种宝石已经存在了吗 提前致谢 这根本不难创建 例如 如果您有一个find 也许像
  • 如何准确地衡量加载模型所需的时间?

    我想对加载模块 find by id 234 调用 所需的时间进行基准测试 另外 我如何跟踪加载页面所需的时间 我知道我在运行 Rails 服务器时得到此信息 但这是在调试模式下 我想要生产速度基准 可能吗 为了快速检查 我强烈建议检查基准
  • 在 Rails 项目中保存自定义异常定义的常规位置是什么? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 当创建自己的自定义异常时 例如 class ThingExploded lt StandardError end class ThingIsMi
  • rake db 问题:迁移 -

    我无法为 Ruby on Rails 设置 MySQL 数据库 设置数据库并确保 config database yml 文件匹配后 我遇到了以下错误消息 U Rails alpha gt rake db migrate trace in
  • 如果即使对于开源项目,rails 项目的任何源代码也应该被隐藏怎么办? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 这是一个很难寻找的东西 如果我有一个开源 Rails Web 应用程序项目 其源代码是公开托管的 例如在 GitHub 上 如果该应用
  • 在 Rails 4 中使用 Strong Params 允许特殊情况下使用额外的参数

    因此 对于一个组织来说 我希望用户能够编辑有关它的一些内容 params require organization permit name location 但在特殊情况下 我希望管理员能够编辑额外的属性 params require or
  • Rails 的多个数据库不适用于远程数据库

    我有一个远程只读 postgres 数据库 它是通过 docker 实例维护的卡尔达诺数据库同步 https github com input output hk cardano db sync 我设法将开发数据库连接到它 它工作正常 但由
  • Rails 6:每个用户只能创建一个配置文件

    我目前正在开发 Rails 6 应用程序 我有以下关联 用户有一个配置文件 并且配置文件属于用户 当编辑用户的配置文件时 我最终为该用户提供了两个配置文件 我希望每个用户只有一份个人资料 编辑表单 profile edit html erb

随机推荐

  • 如何正确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