Microsoft Graph APIを使って、OneDrive上のExcelファイルをWorkatoで更新する仕組みを作っていたときの話です。
順調に動いていたかと思いきや、APIの呼び出しが増えてくると突然のエラー。内容は…
429 Too Many Requests
どうやら呼び出し過ぎてしまったようで、「しばらく待ってからまた呼んでね」というやつですね。
Retry-Afterって…取れないの?
HTTP 429が返ってくると、通常はレスポンスヘッダーに Retry-After という項目がついてきます。これを見て「何秒後に再試行すればいいのか」がわかるわけですが…
Workatoのカスタムアクションでは、このRetry-Afterが取得できませんでした。
設定ミスかと思いサポートに問い合わせたところ、
「設定自体に問題はないですが、現状の仕様ではRetry-Afterヘッダーは取得できません」
とのこと。まじか…。
とりあえずの対応策
今回は暫定対応として、30秒待ってから再試行するバックオフ戦略を入れて乗り切りました。
(とはいえ、本当はRetry-Afterの値が取れるのが理想ですよね…)
おまけ:MS公式のベストプラクティス
「どうすればスロットリング(制限)されにくくなるか?」については、Microsoft公式のこちらに詳しく載っています:
👉 https://learn.microsoft.com/graph/workbook-best-practice#reduce-throttling-errors
今後Workato側で対応が入ることを期待しつつ、しばらくは手動バックオフで付き合っていくことになりそうです。