似乎没有阻止perform
方法使用Sidekiq API。在只读模式下它应该是安全的。
如果它称为“写”方法怎么办?特别是当此方法作用于当前作业本身时。
我们希望在不创建新工作的情况下重新安排工作,因为我们需要使用来自其他工作人员的sidekiq-status
gem来跟踪工作完成情况。
使用MyWorker.perform_in
或MyWorker.perform_at
从工作人员内部重新安排作业会创建新作业,从而难以跟踪总完成情况。我们正在考虑使用Sidekiq::ScheduledSet.new.find
和reschedule
方法,但重新安排即将完成的工作似乎很尴尬并且可能存在危险。
Sidekiq及其API是否支持此用例?
答案 0 :(得分:0)
你可能能够一起破解某些东西,但如果你试图直接修改Redis中的集合和列表,它会非常慢。它们没有被设计成以这种方式使用。
此问题的官方Sidekiq解决方案是批处理。
https://github.com/mperham/sidekiq/wiki/Batches#status
您创建一个作业批处理。如果需要重新安排作业,则会向批处理添加新作业以便稍后执行。您的其他工作人员只检查整个批次的状态以及是否100%完成。