【Python】Bottlenoseが動かなくなった

Python
スポンサーリンク

AmazonのAPIを利用して商品検索していたスクリプトが急に使えなくなって困った。

スポンサーリンク

現象

スクリプトはだめだったのでスクラッチパッドから試すと以下のエラー。
Error! RequestThrottled
HTTP Status 503: Service Unavailable
AWS Access Key ID: XXXXXXXXXXXXXXXX. You are submitting requests too quickly. Please retry your requests at a slower rate.
日本語訳
エラー!RequestThrottled
HTTPステータス503:サービスを利用できない
AWSアクセスキーID:XXXXXXXXXXXXXXX。リクエストの提出が早すぎます。遅いレートでリクエストを再試行してください。

売上がないわけでもなく、利用回数の制限に引っかかっているとも思えない。

 

対応

PA API 5のスクラッチパッドは別に用意されている様子。

以下のリンクから試してみると一応リクエストできる。

キーやシークレットキーは悪くないようです。

Using Scratchpad · Product Advertising API 5.0

アソシエイトセントラルのトップページにもでかでかと記載されています。

2020年3月 31日をもって、PA API 4は完全にサービスを停止します

 

バージョンアップ後もしばらく普通につかえていたので気にしていなかったのですが、

PA APIのバージョンアップに対応できていないのでは?と原因を推測して、

まずはその確認と対応をすることにしました。

Pythonのスクリプトでラッパーとしてbottlenoseを使っているが、

確認したところ最終更新日が古すぎる。PA APIのv5に対応できていなさそう。

なので、「python-amazon-paapi 3.1.0」を使えるか確認してみた。

python-amazon-paapi
Amazon Product Advertising API 5.0 wrapper for Python

 

検索が商品だけなら問題なさそう。しかしBrowseNodeも検索したいので、

そっちには使えなさそう(例がなかった)。

仕方無しにラッパーなしに修正してみるが、これは骨が折れそうだ。

SDKをダウンロード

Using SDK · Product Advertising API 5.0

・インストール

sudo python setup.py install

インストールはうまくいったぽい。

・「paapi5_python_sdk」フォルダをスクリプトと同じところにコピー。(もしくはパスを通しておけばいけるのではと思う)

 

サンプルスクリプトの各変数を自分用に修正して組み込んでいく。

日本で使える設定値

Japan · Product Advertising API 5.0

ホストと地域はこちらを参照。

Common Request Parameters · Product Advertising API 5.0

 

ブラウズノード情報を取得するAPIサンプルを自スクリプトに移植したところ、

サンプルだとうまくいくが、自分の取得したいブラウズノードをしていするとうまく行かない。

以下のエラーメッセージが出力。

Error calling PA-API 5.0!
Status code: 500
Errors : {“__type”:”com.amazon.coral.service#InternalFailure”,”message”:”The request processing has failed due to some unknown error, exception or failure. Please retry again.”}

一見サーバー側のエラーぽいが、リトライしても同じエラーになる。

どうも、引数が一つでも配列の形として格納してあげないとだめなようで、

 

NGパターン:SearchBrowseNodes=”2275277051″

OKパターン:SearchBrowseNodes=[“2275277051”]

 

OKパターンにするとうまく行った。

 

 

コメント

タイトルとURLをコピーしました