批量购买ShopifyAPI

时间:2016-10-08 18:31:30

标签: ruby-on-rails ruby activerecord shopify

是否可以批量检索交易?我目前使用以下方式检索订单:

ShopifyAPI::Order.find(:all, params: {ids: order_ids.join(',')})

order_ids最多包含50个order_id。但是,如果我尝试将事务附加到另一个事务上,它会为每个事务发出一个get请求,查看它正在执行此操作的ShopifyAPI代码:

Transaction.find(:all, :params => { :order_id => id })

我尝试使用以下方式批量加载:

Transaction.find(:all, :params => { :order_ids => order_ids.join(',') })

但是,我从API收到错误,指出未定义order_id。 Order_id只获取一个订单的交易,是否可以批量查看?

对于上下文,我正在尝试围绕事务编写一些报告/分析,因此在每个订单的基础上查找事务会导致发出太多请求并获得错误代码429.我可以创建一个rake任务,缓慢地执行此操作并通过cron安排它,但我想我会问,是否有可能分批抓取它们,因为工作不够理想。

2 个答案:

答案 0 :(得分:1)

你不应该害怕限速。每次调用事务端点时,您必须提供一个订单。由于您的分析不是实时的,只需为自己设置一个在限制范围内下载的任务。

有关如何执行此操作的简单示例,请检查Shopify开源Ruby gem以获取Theme工具。它有一个主题资产的下载程序,显然也符合这个限制。他们围绕这个建立了一个很好的方式。

最简单的形式是,您的请求得到429回复。所以不要放弃那里。等到你有更多的电话可用。你可以想出很多选择。最后,您将获得所需的所有数据,以获得更多代码。

正如您在此处提出的那样,人们无法解决Batch概念的问题,而是调整其代码以适应系统规则。关于为什么没有对这样的资源进行批处理的原因有很多解释。

答案 1 :(得分:0)

处理429错误的最简单方法是在遇到429错误时实施退避策略。为此,您需要修补最低级别的请求调用并将其包装在rescue块中,以便在遇到速率限制错误时自动重试。

Here's an example implementation.