将800个json文件发布到Shopify API(限制为40 /秒)

时间:2019-08-27 17:29:51

标签: json post shopify timedelay bulkupdate

我们大约有800个json文件要发布到Shopify API。无法将其合并到单个API调用中(没有大量的后期API)。 Shopify每秒限制40个请求。这是我们要发布数据的API:

  

POST / admin / api / 2019-07 / inventory_levels/set.json

在数据源上,我们对数据的生成方式和发布时间的控制较少。但是我们可以将json文件存储在一个文件夹中。

我们正在寻找一种工具(或测试套件),该工具可以允许-API分块发布,或者以一种方式安排/限制队列/组中的API请求。我们已经找到"Scheduler" features in tools like JMeter,但希望已经设计出类似解决方案的人寻求解决方案。

预先感谢

1 个答案:

答案 0 :(得分:1)

Shopify REST Admin API将速率限制应用于它收到的API请求。每个请求都会受到一般限制的限制。速率限制旨在允许您的应用程序在一段时间内以稳定的速率发出无限请求,同时还具有不频繁爆发的能力。速率限制使用泄漏存储桶算法。存储桶大小和泄漏率属性决定了API的突发行为和请求率。

默认设置如下:

  • 桶尺寸:40
  • 泄漏率:2 /秒

如果超过了存储桶大小,则返回HTTP 429 Too Many Requests错误。

建议

  1. 在设计应用时要注意API速率限制,以最好地处理请求限制并避免429错误。
  2. 在等待下一个排队的作业运行时,在队列中交错API请求并执行其他处理任务。

使用速率限制标头平衡您的请求量。 我们使用celery处理了该用例。基本上,您需要进行API调用,并且每当调用失败时,您都会获得异常代码。如果代码是 429 ,则您将以 interval (在检查间隔的获取方式之前)重试同一任务,直到成功为止。

在应用限制后,如何获取可以发出请求的时间间隔?
如果您的应用程序受到限制,则只有经过足够的时间并且存储桶再次具有容量后,它才能发出更多请求。您可以使用存储桶大小和泄漏率属性,或使用 Retry-After 响应标题

来手动计算此等待时间

来源:Shopify Rate Limit Documentation