2016-06-12 9 views
-1

ShopifyのRuby Gemを使用して、スマートコレクションをプロダクトストアに編成しています。基本的には、これらのコレクションの製品オーダーを夜間に更新しようとしています(ソート順は手動に設定されています)。目標は、販売データに基づいて製品をソートすることですが、リストの最後に在庫切れ品を置くこともあります。Shopify API - 何千もの製品でSmart Collectionの製品注文を更新するにはどうすればよいですか?

私はほとんどのコレクションにうまく機能するスクリプトを作成するために管理:

@scs = ShopifyAPI::SmartCollection.find(:all,params: {limit: 250}) 
@scs.each do |sc| 
     sc.order(products: @products_in_order) 
     sc.save 
end 

残念ながらコレクションは数百の製品よりも大きい場合には、URIが長くなりすぎ、私はこのエラーを取得:

ActiveResource::ClientError: Failed. Response code = 414. Response message = Request-URI Too Large.

大規模なスマートコレクションで効率的に製品の注文を更新する方法はありますか?私のコレクションの中には1000以上の製品があります。毎日このスクリプトを実行するので、個々の「収集」を個別に更新する必要はありません。

アドバイスありがとうございます。

答えて

0

現在の技術は限られています。最初にやりたいことは、すべてのコレクションをページングで繰り返すことです。ページングではなく、250以上の製品を持つコレクションのすべての製品に触れることはありません。

第2に、ページごとに、コレクションごとに、ソートに必要な詳細を含むハッシュを作成します。さもなければ、あなたは地獄にあなたの記憶の足跡を吹き飛ばす、飢えたハポンのメモリをたくさん蓄えています。ハッシュを使用して製品を注文し、保存します。

これはスクリプトであり、夜間に実行できるので、製品を吸い上げて並べ替え/保存することができます。あなたの強烈な力でトマトやスイカを選んでいるのとは違います。

+0

こんにちはDavid、ご返信ありがとうございます。私はすべての製品を引き出す。上記の制限はコレクションのクエリです(私はコレクションが250個未満です)。変数@products_in_orderには、コレクション内のすべての製品が含まれます。問題は、何百もの製品がある場合、API呼び出しのURIが長くなりすぎることです。何千もの製品と何百ものコレクションがある場合を除いて、ソート順の製品を割り当てる問題はありません。 1日に30,000回のAPIコールを使用しているため、リソースの賢明な使用のようには見えません。 –

+0

なぜあなたはこれをやりたいのですか? 1000sの製品を含むコレクションは、とにかく扱いにくいものになります(顧客はそれらをすべてページするつもりはありません)。とにかく、コードが壊れているように聞こえます。更新による順序はPUTでなければならないので、URIの長さを考慮する必要はありません。それが実際で、エラーがShopifyによって誤ってラベル付けされている場合、バッチで更新を行うとどうなりますか? 100のグループを適用すると、100の製品IDの2番目のグループを適用するとどうなりますか? – bknights

関連する問題