避免同时使用after_commit方法

时间:2015-10-22 02:12:20

标签: ruby-on-rails

有时,两个数据库更新同时发生,因此我的after_commit方法运行两次,创建两个相同的sidekiq作业。我怎么能避免这个?

after_commit :process_update_file, on: :update

1 个答案:

答案 0 :(得分:2)

您可以使用类似sidekiq-unique-jobs插件的内容,一次只运行一个作业实例。这不适合“我们从来没有想要让这种情况发生两次或者患者会得到2倍的辐射剂量”,但应该没问题,“我们宁愿不再运行两次以避免在某些情况下支付额外费用。”< / p>

如果你想绝对确定它没有运行两次(祝你好运!)你可以尝试类似state_machine之类的东西来确保你只执行一次特定路径。