Lesstep
Azure DevOps Services・REST API

「TF400733: The request has been canceled: Request was blocked due to exceeding usage of resource」

Azure DevOps Services は、1つのアカウントや1つのパイプラインが共有のサービスにかける負荷に上限を設けています。上限を超えると、まず要求を遅らせ、続いて HTTP 429 とこの文で断ります。文には、使い切ったリソースと名前空間が入ります。問題は要求そのものではなく、そのアカウントの直近の使用量です。使用量が下がれば、遅れは5分以内に止まります。Microsoft の Rate and usage limits と Monitor usage からまとめました(いずれも英語)。

上限

止まる前の知らせ

Azure DevOps は次の応答ヘッダーを返します。X-RateLimit-Delay 以外は、遅らせ始める前から来るので、クライアントは間に合ううちに速さを落とせます:

何が使ったかを探す

組織の設定(Organization settings)の使用状況(Usage・Project Collection Administrators だけ)に、最初は直近1時間の要求が並びます。利用者ごと・パイプラインごと・よく使われたユーザー エージェント・よく使われたコマンドで見られ、要求ごとに TSTU・遅れ・状態(Normal・Delayed・Blocked)が出ます。表示は最初に遅らされた要求の前後30分が中心です。ユーザー エージェントとコマンドから、たいていスクリプトや道具が分かります。

スクリプトや道具を上限の内に収める

IntelliJ IDEA・Rider などの JetBrains IDE では

Azure DevOps Pull Requests は、JetBrains IDE(2024.1 以降)と Android Studio のプルリク用プラグインです。ツールウィンドウを開いている間の5分ごとの読み直しでは、プルリクの一覧と、そのうち最大100件のコメントのスレッドを、4件ずつ並べて読みます。Azure DevOps に断られた時は Azure DevOps 自身の文を添えてそう知らせ、Retry-After の秒数のあいだその組織には何も送らず、残りのスレッドもその間は読みません。読み直しは 設定 | ツール | Azure DevOps Pull Requests で止められます。読むのは無料、投票・コメント・完了は Pro(30日間の無料試用つき)です。

JetBrains Marketplace で入れる

Azure DevOps は Microsoft Corporation の商標、IntelliJ IDEA は JetBrains s.r.o. の商標です。このページは Microsoft・JetBrains のいずれとも提携しておらず、承認も受けていません。

ほかに:「API resource location … is not registered on …」 · TF400813 · 全組織用の個人用アクセストークンの廃止 · English