我在我们的网络应用程序上运行了一个大型记录导入作业。导入由PORO运行,该PORO计算需要导入的对象数量,并将数字除以当前对象的当前对象的索引,从而为我提供了一种计算完成百分比的简洁方法。在进行此计算后,我将此百分比保存到数据库中,以便轮询它并让用户知道此导入的进度。
看起来sidekiq不允许这些数据库写入触摸数据库,直到整个作业结束,让我留下这个问题:
每个sidekiq作业是否完全包含在交易中?
(我不是很懒,我只是没有足够的时间来完成代码并自己发现。)
答案 0 :(得分:1)
不,Sidekiq本身并没有在交易中包装它的工作。确保您没有循环或调用循环的方法包装在事务中。
答案 1 :(得分:0)
没有。您可以使用Model.transaction { }
控制perform方法中的数据库事务边界。 Sidekiq从不接触数据库。