簡體   English   中英

Sidekiq-刪除任務時刪除計划的作業

[英]Sidekiq - Deleting scheduled jobs when task is deleted

我在用戶使用create動作中的以下代碼創建某個日期的任務時安排提醒電子郵件:

if @post.save
  EmailWorker.perform_in(@time.minutes, @post.id)
end

每當關聯任務刪除時,我都希望刪除計划的提醒郵件。 我嘗試在before_destroy上使用模型方法:

before_destroy :destroy_sidekiq_job

def destroy_sidekiq_job
  post_id = self.id
  queue = Sidekiq::Queue.new('critical')
  queue.each do |job|
    if job.klass == 'EmailWorker' && job.args.first == post_id
      job.delete
    end
  end
end

但是,作業不會從隊列中刪除。 有什么建議可以解決這個問題嗎?

不要這樣 讓Sidekiq執行該作業,但在運行電子郵件作業時驗證該帖子是否存在並且是最新

def perform(post_id)
  post = Post.find_by_id(post_id)
  return unless post

  ...
end

計划的作業還不在隊列中,請使用Sidekiq::ScheduledSet查找計划的作業:

def destroy_sidekiq_jobs
  scheduled = Sidekiq::ScheduledSet.new
  scheduled.each do |job|
    if job.klass == 'EmailWorker' && job.args.first == id
      job.delete
    end
  end
end

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM