ruby-on-rails - 仅在合适的条件下执行工作
问题描述
我正在使用带有 sidekiq 适配器的活动作业,并且我只想在满足某些条件时才执行作业,例如。我追加到队列,但我不想执行队列中的任何项目,除非设置了特定的 redis 标志。我怎样才能做到这一点?如果在触发器之前,我会检查是否设置了标志并抛出异常,我想它会起作用,但它看起来并不优雅。
解决方案
class SendNotificationsJob
include Sidekiq::Worker
queue_as :default
def perform(order)
order_status = $redis_server.get("#{order.id}:status")
unless 'done' == order_status
SendNotificationsJob.set(wait: 10.minutes).perform_later(order)
return # end this job. new job will check in 10min later
end
# fill here
end
end
推荐阅读
- jenkins - 如何检查自由式工作的詹金斯工作区中是否存在文件
- javascript - Javascript 闭包和异步函数参数
- android - 用 DiffUtil 替换 notifyDataSetChanged 和数据绑定,MVVM 中的 LiveData
- javascript - 在无状态组件中单击时在两个图像之间进行反应切换
- django - 如何为工作板实施用户系统(我需要雇主能够注册和创建职位)?
- c++ - 为什么 C++ 中的最小值会打印出奇怪的结果?
- laravel - Laravel 有很多难题
- c# - 如何打开和关闭生成的按钮?
- c# - 我可以使用 Entity Framework Plus 批量更新受保护的属性和类吗?
- javascript - 从列表中删除最后一项