并发请求:第二个请求无法识别第一个请求的更新

时间:2013-07-24 11:43:04

标签: ruby-on-rails concurrency thin

我在请求周期中进行了非常长的操作(平均约30秒)。这不是一个大问题,因为它很少运行,只能通过管理门户运行,否则我会将它推送到Resque或其他任何东西。

当请求开始且对象没有被标记时,控制器方法中发生的第一件事就是设置一个标志:

def create
  raise if @foo.flag?
  @foo.update_attributes! flag: true
  # perform lengthy operation
ensure
  @foo.update_attributes! flag: false
end

当我开始第一个请求时,它将flag设置为true并开始操作。然后当我在第一个请求挂起时启动第二个请求时,它永远不会引发错误,即使我在Rails控制台中可以清楚地看到@foo的标志为真。

我的印象是update_attributes!提交数据库事务,因此后续请求应该看到更改。情况不是这样吗?

我只是在使用瘦服务器进行开发测试。我有什么方法可以做到这一点吗?

0 个答案:

没有答案