我在一行中插入大约4000-5000条记录,平均每个插入请求在1毫秒内连续发送,直到添加所有记录。整个导入被 Package 在一个事务中。作业失败,出现以下错误:
ActionView::Template::Error (Failed. Response code = 429. Response message = Too Many Requests.):
我已将错误追溯到model.create语句。我知道使用activerecord无法一次插入多个记录,所以有可能在短时间内增加请求量吗?或者,我必须使用gem一次插入多条记录吗?i、 e.activerecord导入
我很确定,如果捕获到actionview::template::error并在重试前后退几秒钟,它会正常工作,但是还有其他方法吗?
3条答案
按热度按时间kiayqfof1#
事实证明,这个错误与我们自己的服务器无关。我们进口的其中一件是shopify的。在监视http流量之后,我意识到,当您获得一个订单,并尝试获取与该订单相关的事务时,这是一个额外的请求。所以,我们试图让太多的请求,并达到他们的api限制。
lx0bsm1f2#
这通常发生在一个方法本身以递归方式调用另一个方法时。
所以如果我有
redirect_to
在一个动作中再次发出redirect_to
到相同的操作..所以反过来这会导致太多的请求错误。。这同样适用于渲染
partials
它本身有一个部分呈现父视图,父视图呈现子视图部分,子视图也呈现父视图的部分…所以这就变成了一个递归循环。希望有帮助:)
ui7jx7zq3#
你考虑过用背景工作来完成这个任务吗?根据所使用的数据库,可以同时插入新数据。