【发布时间】:2019-07-31 07:43:23
【问题描述】:
我发现我们只需要一个shopify api调用就可以创建一个新产品。如果我想在shopify上添加20000 plus产品,它将发送20000 plus shopify api 请求。真的花了这么多时间。我应该用作业来做还是代替它,我怎样才能有效地完成这项任务?
【问题讨论】:
我发现我们只需要一个shopify api调用就可以创建一个新产品。如果我想在shopify上添加20000 plus产品,它将发送20000 plus shopify api 请求。真的花了这么多时间。我应该用作业来做还是代替它,我怎样才能有效地完成这项任务?
【问题讨论】:
每个 API 调用添加一个产品并不意味着您必须等待每个调用的响应。由于每个产品添加请求独立于其他请求,您可以同时发出多个添加产品请求。这样做你可能会遇到
HTTP 429 Too Many Requests 错误
因为 Shopify 速率限制。 Shopify 为一般计划提供 40 个请求桶大小,为 Shopify Plus 计划提供 80 个请求桶大小。此外,每个响应都有一个呼叫限制标头,例如
X-Shopify-Shop-Api-Call-Limit: 32/40
更多详情可以在 REST Admin API rate limits 的 Shopify 文档中找到
您可以使用一些 Laravel 特定的 Shopify 包来使 API 调用更轻松、更一致。 API 速率限制处理将是一个加号。作为示例,请查看 Laravel Shopify,但它不支持速率限制。
对于设置,您可以使用Laravel Queues推送产品数据,然后使用
numprocs=8
numprocs 属性来配置多个 queue:work processes 来生成并发的 Add Product 请求。
除了 API 之外的另一种方法是生成 Importing products with a CSV file 中定义的 CSV 文件。但是,1 个文件的最大文件大小限制为 15 MB。
【讨论】: