从内部执行调用Sidekiq API是否安全?

时间:2016-06-10 08:30:06

标签: ruby sidekiq job-scheduling

似乎没有阻止perform方法使用Sidekiq API。在只读模式下它应该是安全的。

如果它称为“写”方法怎么办?特别是当此方法作用于当前作业本身时。

我们希望在不创建新工作的情况下重新安排工作,因为我们需要使用来自其他工作人员的sidekiq-status gem来跟踪工作完成情况。

使用MyWorker.perform_inMyWorker.perform_at从工作人员内部重新安排作业会创建新作业,从而难以跟踪总完成情况。我们正在考虑使用Sidekiq::ScheduledSet.new.findreschedule方法,但重新安排即将完成的工作似乎很尴尬并且可能存在危险。

Sidekiq及其API是否支持此用例?

1 个答案:

答案 0 :(得分:0)

你可能能够一起破解某些东西,但如果你试图直接修改Redis中的集合和列表,它会非常慢。它们没有被设计成以这种方式使用。

此问题的官方Sidekiq解决方案是批处理。

https://github.com/mperham/sidekiq/wiki/Batches#status

您创建一个作业批处理。如果需要重新安排作业,则会向批处理添加新作业以便稍后执行。您的其他工作人员只检查整个批次的状态以及是否100%完成。