ruby-on-rails - 在 Rails 中跟踪 sidekiq 作业
问题描述
我有一个名为 Book 的模型,该模型有一种方法可以在后台生成大量 Sidekiq 作业,该方法会根据特定条件生成额外的 Sidekiq 作业。
我正在尝试开发一种简单的方法,通过能够从模型中跟踪它们来从本质上管理这些 Sidekiq 作业。换句话说,我希望能够暂停、删除或重新安排所有链接回特定书籍的作业。
我尝试做的一件事是创建一个BookMonitor
模型belongs_to :book
,而 Book has_one :book_monitor
。这里的属性BookMonitor
基本上是book_id:integer
并且worker_ids:text
被序列化为一个数组。
我唯一担心的是如何基本更新worker_ids
. 例如:
class Book < ApplicationRecord
def add_jid_to_monitor(jid)
worker_jids = book_monitor.worker_ids
book_monitor.update(worker_ids: worker_jids << jid)
end
end
class RandomWorker
def perform
Book.find(1).add_jid_to_monitor(self.jid)
end
end
如果两个工作人员同时运行,这不会导致问题,因为该add_jid_to_monitor
方法会尝试检索worker_ids
?
有没有更好的方法来管理这样的事情?
解决方案
推荐阅读
- r - 在shinyapps.io上部署后,我的闪亮应用程序不会加载图像,但它在本地工作得很好
- arrays - 在 Swift 5.1 中,在不知道键的情况下,根据 Date 类型的字典值对字典数组进行排序?
- php - 发送电子邮件时出现 Swift_TransportException
- c++ - < 没有成员的类的运算符
- orange - 我是否以正确的方式在 Orange 中使用 PCA?
- node.js - 电子升级节点
- matlab - 如何根据实时(x,y,z)坐标在 Simulink 中制作 3d 图?
- forms - Shopify Omnisend 自定义 HTML 注册表单
- java - 如何在 GUI 应用程序中超出滚动窗格之外的滚动条
- node.js - Docusign 嵌入式签约仪式分步指南