◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り44日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り44日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/API & SDK
⬡ API & SDK/2026-04-30上級

Claude APIをCloudflare Queuesで非同期処理する:障害復旧と優先度制御を含めた本番設計

Claude APIをCloudflare Queuesで非同期処理する本番グレードのパイプライン設計を、Producer/Consumer両方の動作コード・障害時のリトライ戦略・優先度制御・コスト制御まで含めて解説します。

claude-api83cloudflare-queuescloudflare-workers5asyncproduction87rate-limit7観察可能性

✦ プレミアム記事

「アップロードされた100件のPDFをClaudeで一気に要約したいだけなのに、Workerが10秒で死ぬ」——これは私が実際に直面した現象でした。Cloudflare WorkersのCPU時間と上流のClaude APIレート制限という2つの壁にぶつかった結果、ユーザーがじっと待っているのに何件かは応答が返らないという最悪のUXになっていました。

この記事は、その失敗から学んだ「Claude APIの呼び出しは絶対にWorkerのリクエストハンドラから直接行わない」という原則を、Cloudflare Queuesを軸に再構成した本番パイプラインの設計記録です。コードはそのままコピーして動く形で、障害時のリトライ・優先度制御・コスト制御まで含めて整理しました。

なぜリクエストハンドラから直接Claude APIを叩いてはいけないのか

Cloudflare Workersには無料枠で50ms、有料枠でも30秒のCPU制限があります(実時間ではなく純粋なCPU時間)。一方、Claude API(Sonnet 4.6)は長文出力時に20〜60秒の応答時間を平気で取ります。リクエストハンドラから同期で叩くと次の3つが同時に起きます。

  • WorkerがExceeded CPU limitで死ぬ: ユーザーには502が返り、課金は発生しない代わりにジョブも消える
  • クライアントの再送が雪崩を起こす: ブラウザの自動再試行が走り、一つの作業に対してClaude APIへの請求だけが3〜4倍に膨らむ
  • 429・529の連鎖: バーストでレート制限に到達し、すでに走っている別ユーザーのリクエストまで巻き込む

解決策は単純です。リクエストハンドラはジョブをキューに積むだけにして、Claude APIの呼び出しはConsumer Workerに切り出します。これで「ユーザーへの応答時間」と「Claude APIの応答時間」が完全に分離されます。バッチ的な使い方ならClaude APIのMessages Batchesも選択肢ですが、ユーザー単位のリアルタイム性が要る場合はQueuesの方が筋が通ります。

パイプラインの全体像

今回設計するパイプラインは3層構造です。

  • Producer層: ユーザーリクエストを受け、ジョブをキューに積むだけ。応答は即座に「処理中」を返す
  • Consumer層: キューからメッセージを取り出し、Claude APIを呼び、結果をD1またはR2に保存
  • 観察層: 失敗ジョブはDLQ(Dead Letter Queue)に流し、Cloudflare Logpushで集約。失敗率が一定を超えたらアラート

優先度を扱うため、キューは2本に分けます。claude-jobs-high(ユーザー対話用)とclaude-jobs-bulk(バックグラウンド一括処理用)です。Consumer Workerは両方を購読しますが、設定で同時実行数(max_concurrency)を変えることで、バルク処理がインタラクティブな処理を圧迫しないようにします。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦ユーザー体験を壊さずに数百〜数千件のClaude API呼び出しを処理したい人が、当日中に動くパイプラインを手に入れられます
✦429・529・タイムアウトに備えたackとretry、デッドレターキューの分岐ロジックを、コピーして動くコードで習得できます
✦優先度別キュー分離とトークン予算の監視を組み合わせ、急なバズや大量アップロードでも本番が落ちないアーキテクチャに切り替えられます
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⬡ API & SDK2026-05-02
Claude API の本番運用で予算上限を確実に守る — 日次トークン超過を検知して自動停止するサーキットブレーカー設計
Claude API のコストを「気づいたら月10万円超過」で終わらせない、サーキットブレーカーパターンの実装ガイドです。Cloudflare Workers + KV / Durable Objects で日次・月次予算を強制し、停止・劣化・通知の3戦略を切り替えるコードを示します。
⬡ API & SDK2026-05-26
Claude API の構造化レスポンスを本番で安定させる — tool_use と JSON Schema、多層検証の実装メモ
Claude API の応答を JSON で受け取る実装は数行で書けますが、本番運用では「形は正しいが意味が壊れている」レスポンスにどう備えるかが分かれ目になります。tool_use・JSON Schema・ドメイン検証を組み合わせた多層パイプラインを、壁紙アプリの分類処理での実体験を交えて整理しました。
⬡ API & SDK2026-05-22
Claude API の tool_result could not be submitted が再発しないための回復ハンドラ設計
Claude API でエージェントを長時間動かしていると、ある日突然 'tool_result could not be submitted' が連発し始めることがあります。再試行しても直らない、ストリーミング途中で死ぬ、そして次のセッションでもまた出る — 常時稼働のエージェント基盤で実際に踏み抜いた4種類の原因と、TypeScript で書いた回復ハンドラの実装を整理しました。