请求ActiveRecord

时间:2016-10-06 23:31:40

标签: mysql ruby-on-rails ruby ruby-on-rails-4 activerecord

我连续插入大约4000-5000条记录,平均每次连续1ms内发送插入请求,直到添加所有记录。整个导入包含在一个事务中。作业失败,出现以下错误:

ActionView::Template::Error (Failed.  Response code = 429.  Response message = Too Many Requests.):

我已将错误追溯到我的model.create语句。我知道使用ActiveRecord无法一次插入多条记录,因此可以在短时间内增加请求量吗?或者,我是否必须使用gem一次插入多个记录?即activerecord-import

我很确定我是否抓住了ActionView :: Template :: Error并在重试之前退了几秒钟才能正常工作,但有没有其他方法可以做到这一点?

3 个答案:

答案 0 :(得分:0)

您是否考虑过使用后台工作来完成此任务?根据您使用的数据库,您可以同时插入新数据。

答案 1 :(得分:0)

当一个方法本身以递归方式调用另一个方法时,通常会发生这种情况。

因此,如果我在一个动作中有一个redirect_to,再次向同一个动作发送redirect_to,那么这会导致太多请求错误 ..

同样适用于渲染partials,它本身具有部分呈现父级,其中父视图呈现子部分,这也呈现了部分父。 ..所以这成为一个递归循环。

希望有所帮助:)

答案 2 :(得分:0)

事实证明这个错误与我们自己的服务器无关。我们导入的其中一件作品来自Shopify。在监控HTTP流量后,我意识到当您收到订单并尝试获取与该订单相关的交易时,这是一个额外的请求。因此,我们试图提出太多请求并达到其API限制。