【问题标题】:Post 800 json files to Shopify API (limitation is 40/second)将 800 个 json 文件发布到 Shopify API(限制为 40/秒)
【发布时间】:2019-08-27 17:29:51
【问题描述】:

我们有大约 800 个 json 文件要发布到 Shopify API。它不能合并到单个 API 调用中(没有 BULK post API)。 Shopify 限制每秒 40 个请求。这是我们发布数据的 API:

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

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

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

提前致谢

【问题讨论】:

  • 这个问题几乎不可能回答。在几乎所有常用的已知脚本语言中,进行 HTTP POST 调用是如此常见和容易。如果您无法组织您的“来源”进行 POST,则必须说明原因以寻求帮助。
  • @DavidLazar 我们正在尝试在源代码上处理它,但我们还没有能够实现它。拥有一个类似 node.js 的脚本来监视 .json 文件的文件夹并执行我们需要的操作是最后一个选项。如果有可用的工具,我们希望直接使用它。
  • @HemantTank,您不能设置一个 webhook 来接收您的原始 JSON 数据,而不是将其存储在文件中,而是通过 API 发送到 Shopify?
  • @HemantTank,其次,如果上传 800 个文件是一次性活动,您可以通过编程方式进行。这可以是您认为合适的顺序或并行调用。
  • @HymnZ - 正如我所提到的,我们正在从我们的界面中尝试另一种方法。将创建文件。但是,我们需要知道是否有可以自动化它的工具——我们需要的主要功能是调度以克服每秒请求的限制。谢谢。

标签: json post shopify timedelay bulkupdate


【解决方案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

【讨论】:

  • 谢谢,这提供了丰富的信息,我相信它证实了 Shopify 没有批量“设置”API,我们必须遵守油门限制。将研究 Celery。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-09-11
  • 2012-01-25
  • 1970-01-01
相关资源
最近更新 更多