【发布时间】:2018-11-25 16:38:09
【问题描述】:
我正在尝试在 PHP ( Laravel ) 中使用 Shopify GraphQL API for Admin。
与 REST api 相比,GraphQL api 中的速率限制和节流工作方式不同,它是根据查询的cost计算的。
需要注意的几点:
- 一次 api 调用(查询)的最大可用成本为 1000。
- 如果你从1000点消耗了一些点,每秒会恢复50点。
- 如果您的存储桶中的成本点较少,并且您查询的成本高于此值,它将受到限制。
我传递给 api 的查询的估计成本为 502,由 requestedQueryCost 表示。而 actualQueryCost 表示 api 针对特定商店返回的实际 response。
在上面的快照中,这是最坏的情况,对于订单数量很大的商店,requestedQueryCost 等于 acutalQueryCost。
现在,执行此查询时,我消耗了 502 个点,还剩 498 个,经过 1 秒,添加了 50 个点 = 548,我可以进行第二次 api 调用以获取第二页数据。在第二次 api 调用之后,我剩下的积分会减少,所以我必须让 sleep 1 或 2 秒才能获得积分才能进行 api 调用。
在快照中显示的情况下,我必须等待 10 秒 休眠才能恢复 500 点 以进行下一次 api 调用。
问题: 如何最好地决定不同商店的睡眠(等待)时间?我们不希望所有商店都等待 10 秒,即使它们的查询成本较低。
注意:有关代码参考,请参阅下面的答案。
【问题讨论】:
-
查看
bulkOperations,您可以在每个商店异步执行 1 个,并且不适用分页或限制。
标签: php laravel graphql shopify shopify-app