gee*_*hic 7 ruby-on-rails sidekiq
所以我的模型中有一个Sidekiq工作者,看起来像这样:
class Perk < ActiveRecord::Base
include Sidekiq::Worker
include Sidekiq::Status::Worker
after_save :update_release_time
def update_release_time
if self.release_time_changed?
#if scheduled job already exists then cancel and reschedule
# Sidekiq::Status.cancel scheduled_job_id
# scheduled_job_id = NotifierWorker.perform_at(time.seconds.from_now, .....)
#elsif scheduled job doesn't exist, then schedule for the first time
# scheduled_job_id = NotifierWorker.perform_at(time.seconds.from_now, .....)
#end
end
end
end
Run Code Online (Sandbox Code Playgroud)
所以基本上,我的代码检查发布时间是否已经改变.如果有,则必须取消先前安排的作业并在新的时间安排它.我如何实现这一点,即代替我的伪代码?如何检查是否scheduled_job_id存在然后获取其ID?
Mik*_*ham 20
该API文档有什么可以做一个概述,但你真的需要潜入源发现的所有功能.
你可以这样做,但效率不高.这是JID查找预定作业的线性扫描.
require 'sidekiq/api'
Sidekiq::ScheduledSet.new.find_job(jid).try(:delete)
Run Code Online (Sandbox Code Playgroud)
或者,您的工作可以查看它在运行时是否仍然相关.
| 归档时间: |
|
| 查看次数: |
6101 次 |
| 最近记录: |