![](/img/trans.png)
[英]Sidekiq scheduled jobs gets automatically deleted (Sidekiq + Rails)
[英]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.