sidekiq工作是否在大型交易中运行?

时间:2015-06-10 19:53:06

标签: ruby-on-rails ruby sidekiq

我在我们的网络应用程序上运行了一个大型记录导入作业。导入由PORO运行,该PORO计算需要导入的对象数量,并将数字除以当前对象的当前对象的索引,从而为我提供了一种计算完成百分比的简洁方法。在进行此计算后,我将此百分比保存到数据库中,以便轮询它并让用户知道此导入的进度。

看起来sidekiq不允许这些数据库写入触摸数据库,直到整个作业结束,让我留下这个问题:

每个sidekiq作业是否完全包含在交易中?

(我不是很懒,我只是没有足够的时间来完成代码并自己发现。)

2 个答案:

答案 0 :(得分:1)

不,Sidekiq本身并没有在交易中包装它的工作。确保您没有循环或调用循环的方法包装在事务中。

答案 1 :(得分:0)

没有。您可以使用Model.transaction { }控制perform方法中的数据库事务边界。 Sidekiq从不接触数据库。