Closed1
Shopify の BulkOperation が遅すぎる問題への対応
Shopify 上の商品数がとても多い店舗で全商品を取得するような BulkOperation を叩くと、全然ステータスが COMPLETED
にならない場合がある。
serverless な環境を構築していると Lambda や Cloud Functions なんかの実行時間制限に引っかかってしまっていつまで経っても終わらない。
while 文なんかで currentBulkOperation
を監視しながら待っていてもキリがないので一度の実行で完了を待つのは潔く諦めよう。
一度 bulkOperationRunQuery
を叩くと、ほっといても Shopify 側で完了するまで勝手に処理し続けてくれるので、定期的に currentBulkOperation.status
を見に行くような関数を作ってあげるとよい。
例えば1時間ごとに定期実行する関数を用意したとして、中身はこのようになる。
-
currentBulkOperation.status === 'COMPLETED'
ならcurrentBulkOperation.url
から JSONL ファイルを取得する(currentBulkOperation.status === 'RUNNING'
なら関数を即座に終了) - JSONL ファイルを元にいろいろ処理する
- 処理が終わったら
bulkOperationRunQuery
を実行しておく
これでリアルタイム性は損なわれるものの、当初の目的であった商品全件取得は達成される。
このスクラップは2021/03/25にクローズされました