我在请求周期中进行了非常长的操作(平均约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!
提交数据库事务,因此后续请求应该看到更改。情况不是这样吗?
我只是在使用瘦服务器进行开发测试。我有什么方法可以做到这一点吗?