相关疑难解决方法(0)

如何删除sidekiq中的作业

我在我的rails应用程序中使用sidekiq.我的应用程序的用户创建启动sidekiq作业的报告.但是,有时用户希望能够取消"处理"报告.删除报告很简单,但我也需要能够删除sidekiq作业.

到目前为止,我已经能够获得这样的工人列表:

workers = Sidekiq::Workers.new
Run Code Online (Sandbox Code Playgroud)

并且每个worker都有包含report_id的args,因此我可以识别哪个作业属于哪个报告.但是,我不确定如何实际删除该作业.应该注意的是,我想删除作业当前是忙还是重试.

ruby-on-rails sidekiq

36
推荐指数
5
解决办法
4万
查看次数

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?

ruby-on-rails sidekiq

7
推荐指数
1
解决办法
6101
查看次数

标签 统计

ruby-on-rails ×2

sidekiq ×2