Nano Banana Pro API を呼び出して4K画像を生成する際、HTTPSConnectionPool Read timed out エラーが頻発していませんか?これは、デフォルトのHTTPクライアントのタイムアウト設定が、Nano Banana Proの長い推論時間に対応できていないためです。この記事では、タイムアウトによる切断が発生する3つの根本的な原因を体系的に分析し、異なる解像度に応じた最適なタイムアウト設定案を提供します。
本記事の価値: この記事を読み終える頃には、Nano Banana Pro APIのタイムアウト設定のコツ、HTTP/2互換性の問題への対策、そしてHTTPポート経由でストリーミングの中断を回避し、4K画像生成の安定性を確保する方法をマスターできるでしょう。

Nano Banana Pro API タイムアウト設定の重要ポイント
| 画像解像度 | 実際の生成時間 | 推奨タイムアウト設定 | 安全マージン | 適用シーン |
|---|---|---|---|---|
| 1K (1024×1024) | 30-90 秒 | 300 秒 | +210 秒 | 標準的な画像生成 |
| 2K (2048×2048) | 50-120 秒 | 300 秒 | +180 秒 | 高精細画像生成 |
| 4K (4096×4096) | 100-170 秒 | 600 秒 | +430 秒 | 超高精細画像生成 |
| 極端なケース (ネットワーク変動/ピーク時) | 180秒以上になることも | 600 秒 | – | 本番環境推奨 |
Nano Banana Pro API タイムアウト問題の根本的な原因
核心的な違い: Nano Banana Pro は Google の最新の画像生成モデルであり、TPU(Tensor Processing Unit)上で推論が行われるため、生成時間がテキストモデルよりも大幅に長くなります。標準的な HTTP クライアントのデフォルト設定(通常 30〜60 秒)では、実際の処理時間に全く対応できず、頻繁にタイムアウトが発生してしまいます。
2026年1月17日、Google のグローバルなリスク管理と計算リソースの不足により、Nano Banana Pro API の生成時間が 20〜40 秒から 180 秒以上へと急増しました。一部の API アグリゲータープラットフォームでは、180 秒を超える課金ログの補正メカニズムがトリガーされる事態となりました。この出来事は、タイムアウト設定には十分な余裕を持たせる必要があることを改めて浮き彫りにしました。
💡 技術的なアドバイス: 実際の開発では、APIYI (apiyi.com) プラットフォームを経由して Nano Banana Pro API を呼び出すことをお勧めします。このプラットフォームは、長時間の推論用に最適化された HTTP インターフェース (http://api.apiyi.com:16888/v1) を提供しており、デフォルトで適切なタイムアウト時間が設定されています。1K から 4K までの全解像度の画像生成をサポートしており、タイムアウトによる切断を効果的に回避できます。
根本原因 1: HTTP クライアントのデフォルトタイムアウト設定が短すぎる
標準 HTTP ライブラリのデフォルトタイムアウトの罠
ほとんどのプログラミング言語の標準 HTTP ライブラリでは、デフォルトのタイムアウト設定が著しく不足しています。
| HTTP ライブラリ | デフォルト接続タイムアウト | デフォルト読み取りタイムアウト | Nano Banana Pro への適合性 |
|---|---|---|---|
| Python requests | 無制限 | 無制限(ただし実際にはシステム制限を受ける) | ❌ 明示的な設定が必要 |
| Python httpx | 5 秒 | 5 秒 | ❌ 著しく不足 |
| Node.js axios | 無制限 | 無制限 | ⚠️ 実際のタイムアウトの検証が必要 |
| Java HttpClient | 無制限 | 30 秒 (JDK 11+) | ❌ 不足 |
| Go http.Client | 無制限 | 無制限(ただし Transport の制限を受ける) | ⚠️ Transport の設定が必要 |
Python requests の隠れたタイムアウト問題:
requests ライブラリのドキュメントではデフォルトでタイムアウト制限がないとされていますが、実際にはオペレーティングシステムの TCP タイムアウトや下層のソケットタイムアウトの影響を受け、通常 60〜120 秒程度で接続が切断されます。これにより、多くの開発者が「タイムアウトを設定しなければタイムアウトは発生しない」と誤解し、本番環境で予期せぬ切断に遭遇することになります。
import requests
# ❌ 错误: 未显式设置超时,实际会在 60-120 秒左右超时
response = requests.post(
"https://api.example.com/v1/images/generations",
json={"prompt": "生成 4K 图像", "size": "4096x4096"},
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
# 当生成时间超过 120 秒时,会抛出 ReadTimeout 异常
正しいタイムアウト設定方法
方法 1: Python requests での明示的なタイムアウト設定
import requests
# ✅ 正确: 显式设置超时
response = requests.post(
"https://api.example.com/v1/images/generations",
json={
"prompt": "A futuristic city with neon lights",
"size": "4096x4096", # 4K 分辨率
"model": "nano-banana-pro"
},
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=(10, 600) # (连接超时, 读取超时) = (10秒, 600秒)
)
timeout パラメータの説明:
- 接続タイムアウト (10 秒): TCP 接続を確立するまでの最大待機時間。通常 10 秒で十分です。
- 読み取りタイムアウト (600 秒): サーバーからレスポンスデータが返ってくるまでの最大待機時間。4K 画像の場合は 600 秒を推奨します。
方法 2: Python httpx によるカスタムクライアント
import httpx
# 创建自定义客户端,强制使用 HTTP/1.1 并设置长超时
client = httpx.Client(
timeout=httpx.Timeout(
connect=10.0, # 连接超时 10 秒
read=600.0, # 读取超时 600 秒
write=30.0, # 写入超时 30 秒
pool=10.0 # 连接池超时 10 秒
),
http2=False, # ⚠️ 关键: 强制使用 HTTP/1.1,避免 HTTP/2 兼容性问题
limits=httpx.Limits(
max_connections=10,
max_keepalive_connections=5
)
)
# 使用自定义客户端调用 API
response = client.post(
"http://api.apiyi.com:16888/v1/images/generations",
json={
"prompt": "Cyberpunk style portrait",
"size": "4096x4096",
"model": "nano-banana-pro"
},
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
# 关闭客户端
client.close()
非同期 httpx 設定の完全な例を表示
import httpx
import asyncio
async def generate_image_async():
"""异步生成图像,支持长时间超时"""
async with httpx.AsyncClient(
timeout=httpx.Timeout(
connect=10.0,
read=600.0, # 4K 图像推荐 600 秒
write=30.0,
pool=10.0
),
http2=False, # 强制 HTTP/1.1
limits=httpx.Limits(
max_connections=20,
max_keepalive_connections=10
)
) as client:
response = await client.post(
"http://api.apiyi.com:16888/v1/images/generations",
json={
"prompt": "A serene landscape at sunset",
"size": "4096x4096",
"model": "nano-banana-pro",
"n": 1
},
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
return response.json()
# 运行异步函数
result = asyncio.run(generate_image_async())
print(result)

🎯 ベストプラクティス: Nano Banana Pro API に切り替える際は、まず APIYI (apiyi.com) プラットフォームを通じて、各解像度での実際の生成時間をテストすることをお勧めします。このプラットフォームは HTTP ポートインターフェース (http://api.apiyi.com:16888/v1) を提供しており、デフォルトでタイムアウト設定が最適化されているため、設定が適切かどうかを迅速に検証できます。
根本原因 2: 長接続ストリーミングにおける HTTP/2 プロトコルの互換性問題
HTTP/2 の設計上の欠陥と Nano Banana Pro の競合
HTTP/2 はパフォーマンスの向上を目的として設計されましたが、長接続(ロングコネクション)によるストリーミング処理においては、いくつかの深刻な互換性の問題が存在します。
問題 1: TCP レベルのヘッドオブラインブロッキング (Head-of-Line Blocking)
HTTP/2 は多重化 (Multiplexing) によって HTTP/1.1 のアプリケーション層におけるヘッドオブラインブロッキングを解決しましたが、新たに TCP レベルでのヘッドオブラインブロッキング問題を引き起こしました。すべての HTTP/2 ストリームは単一の TCP 接続に集約されるため、たった一つの TCP パケットが失われるだけで、その接続上のすべてのストリームの転送がブロックされてしまいます。
HTTP/1.1 (6 つの並行接続):
接続 1: [Stream A] ━━━━━━━━━▶
接続 2: [Stream B] ━━━━━━━━━▶ ✅ パケット損失は単一のストリームにのみ影響
接続 3: [Stream C] ━━━━━━━━━▶
HTTP/2 (単一接続による多重化):
接続 1: [Stream A][Stream B][Stream C] ━━━━━━━━━▶
↑ TCP パケット損失がすべてのストリームをブロック ❌
問題 2: ストリーム識別子の枯渇 (Stream Identifier Exhaustion)
HTTP/2 のストリーム識別子 (Stream ID) は 31 ビットの整数で、最大値は 2^31-1 (約 21 億) です。長時間の接続では、使用可能なストリーム識別子が枯渇する可能性があり、さらにストリーム識別子は再利用できないため、新しい接続を作成し直す必要があります。
問題 3: 中継 API における HTTP/2 実装品質のばらつき
多くの API 中継プラットフォームやリバースプロキシにおいて、HTTP/2 の実装にバグが存在することがあります。特に長時間のストリーミング処理において顕著です。
- ストリームリセット (RST_STREAM) の不適切な処理による、予期しない接続の切断
- WINDOW_UPDATE フレームの管理ミスによる、フロー制御の失敗
- GOAWAY フレームの誤作動による、強制的な接続終了
Nano Banana Pro のシナリオにおける HTTP/2 vs HTTP/1.1 実測比較
| 指標 | HTTP/1.1 | HTTP/2 | 推奨 |
|---|---|---|---|
| 接続の安定性 | 高 (独立した接続、互いに影響しない) | 低 (単一接続の多重化、パケット損失が全ストリームに波及) | HTTP/1.1 ✅ |
| 長接続のサポート | 成熟 (Keep-Alive メカニズムが安定) | 不安定 (ストリーム識別子の枯渇問題) | HTTP/1.1 ✅ |
| タイムアウト処理 | シンプルで明確 (接続レベルのタイムアウト) | 複雑 (ストリームレベル + 接続レベルのタイムアウト) | HTTP/1.1 ✅ |
| 中継 API の互換性 | 極めて高い (すべてのプラットフォームが対応) | ばらつきあり (一部のプラットフォームにバグあり) | HTTP/1.1 ✅ |
| Nano Banana Pro 4K 生成成功率 | 95%+ | 60-70% | HTTP/1.1 ✅ |
解決策: HTTP/1.1 の強制使用と HTTP ポートの利用
解決策 1: Python httpx で HTTP/1.1 を強制する
import httpx
# HTTP/1.1 を強制使用し、HTTP/2 の互換性問題を回避する
client = httpx.Client(
http2=False, # ⚠️ 重要な設定: HTTP/2 を無効化
timeout=httpx.Timeout(read=600.0)
)
response = client.post(
"http://api.apiyi.com:16888/v1/images/generations", # HTTP ポートを使用
json={"prompt": "...", "size": "4096x4096"},
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
解決策 2: Python requests (デフォルトで HTTP/1.1)
import requests
# requests ライブラリはデフォルトで HTTP/1.1 を使用するため、追加設定は不要
response = requests.post(
"http://api.apiyi.com:16888/v1/images/generations",
json={"prompt": "...", "size": "4096x4096"},
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=(10, 600)
)
解決策 3: Node.js axios で HTTP/1.1 を強制する
const axios = require('axios');
const http = require('http');
// HTTP/1.1 専用の agent を作成
const agent = new http.Agent({
keepAlive: true,
maxSockets: 10,
timeout: 600000 // 600 秒
});
// カスタム agent を使用するように axios を設定
const response = await axios.post(
'http://api.apiyi.com:16888/v1/images/generations',
{
prompt: 'A beautiful sunset',
size: '4096x4096',
model: 'nano-banana-pro'
},
{
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
},
httpAgent: agent, // HTTP/1.1 agent を使用
timeout: 600000 // 600 秒のタイムアウト
}
);

💰 コスト最適化: 高い安定性が求められる 4K 画像生成プロジェクトでは、APIYI (apiyi.com) プラットフォーム経由で Nano Banana Pro API を呼び出すことをお勧めします。このプラットフォームは専用の HTTP ポートインターフェース (http://api.apiyi.com:16888/v1) を提供しており、デフォルトで HTTP/1.1 プロトコルを使用することで HTTP/2 の互換性問題を回避しています。また、より手頃な料金体系を提供しており、本番環境へのデプロイにも最適です。
根本原因 3: ストリーミングとネットワーク変動の相乗効果
Nano Banana Pro の非ストリーミング・レスポンス特性
GPT-4やClaudeなどのテキスト生成モデルとは異なり、Nano Banana Pro APIは画像生成にストリーミング(Streaming)を使用しません。生成プロセス全体は以下のようになります。
- リクエストフェーズ (1-3秒): クライアントがサーバーにリクエストを送信
- 推論フェーズ (30-170秒): サーバーがTPU上で画像を生成。この間、クライアントにはレスポンスデータが一切送られません
- レスポンスフェーズ (1-5秒): サーバーが完全なbase64エンコード済みの画像データを返却
重要な問題: 推論フェーズの30-170秒間、クライアントのHTTP接続は完全にアイドル状態となり、TCP Keep-Aliveのみが接続を維持し、アプリケーション層のデータ転送は発生しません。これにより、以下の事象が引き起こされます。
- 中間ネットワーク機器(NAT、ファイアウォール、プロキシ)が接続断絶と判断し、能動的に接続をクローズする可能性がある
- 不安定なネットワーク環境下では、長時間のアイドル接続が中断されやすくなる
- 一部のクラウド事業者のLoad Balancerには、アイドルタイムアウト制限がある(例:AWS ALBのデフォルトは60秒)
ネットワーク変動がタイムアウトに与える影響
| ネットワーク環境 | 実際の生成時間 | ネットワーク遅延の影響 | 推奨タイムアウト設定 |
|---|---|---|---|
| 安定した社内網/IDC | 100秒 | +10-20秒 | 300秒 (バッファ 180秒) |
| 家庭用光回線/モバイル通信 | 100秒 | +30-50秒 | 600秒 (バッファ 450秒) |
| 国際ネットワーク/VPN | 100秒 | +50-100秒 | 600秒 (バッファ 400秒) |
| ピーク時 (2026/1/17 事象) | 180秒 | +20-40秒 | 600秒 (バッファ 380秒) |
対応戦略: タイムアウト + 再試行 + フォールバック
import requests
import time
from typing import Optional
def generate_image_with_retry(
prompt: str,
size: str = "4096x4096",
max_retries: int = 3,
timeout: int = 600
) -> Optional[dict]:
"""
画像を生成する(タイムアウト時の再試行をサポート)
Args:
prompt: 画像生成プロンプト
size: 画像サイズ (1024x1024, 2048x2048, 4096x4096)
max_retries: 最大再試行回数
timeout: タイムアウト時間 (秒)
Returns:
生成結果または None (失敗時)
"""
api_url = "http://api.apiyi.com:16888/v1/images/generations"
headers = {"Authorization": "Bearer YOUR_API_KEY"}
for attempt in range(max_retries):
try:
print(f"試行 {attempt + 1}/{max_retries}: {size} 画像を生成中...")
start_time = time.time()
response = requests.post(
api_url,
json={
"prompt": prompt,
"size": size,
"model": "nano-banana-pro",
"n": 1
},
headers=headers,
timeout=(10, timeout) # (接続タイムアウト, 読み取りタイムアウト)
)
elapsed = time.time() - start_time
print(f"✅ 生成成功! 所要時間: {elapsed:.2f} 秒")
return response.json()
except requests.exceptions.Timeout:
elapsed = time.time() - start_time
print(f"❌ タイムアウト: {elapsed:.2f} 秒")
if attempt < max_retries - 1:
wait_time = 5 * (attempt + 1) # 指数関数的バックオフ
print(f"⏳ {wait_time} 秒待機した後に再試行します...")
time.sleep(wait_time)
else:
print("❌ 最大再試行回数に達しました。生成に失敗しました。")
return None
except requests.exceptions.RequestException as e:
print(f"❌ ネットワークエラー: {e}")
if attempt < max_retries - 1:
time.sleep(5)
else:
return None
return None
# 使用例
result = generate_image_with_retry(
prompt="A majestic mountain landscape",
size="4096x4096",
max_retries=3,
timeout=600
)
if result:
print(f"画像 URL: {result['data'][0]['url']}")
else:
print("画像の生成に失敗しました。後でもう一度お試しください。")
🚀 クイックスタート: Nano Banana Pro APIを迅速に統合するには、APIYI(apiyi.com)プラットフォームの使用をお勧めします。このプラットフォームには以下の利点があります。
- HTTPポートインターフェース: http://api.apiyi.com:16888/v1 により、HTTPSハンドシェイクのオーバーヘッドを回避
- 最適化されたタイムアウト設定: デフォルトで600秒のタイムアウトをサポートし、4K生成シーンをカバー
- インテリジェントな再試行メカニズム: プラットフォーム側で一時的なタイムアウトを自動処理し、成功率を向上
- 課金補填: 180秒を超えるリクエストには自動的に課金補填が適用され、無駄なコストを防止
APIYI プラットフォームの HTTP ポートインターフェースの利点
なぜ HTTPS ではなく HTTP の使用が推奨されるのか?
| 特性 | HTTPS (api.apiyi.com/v1) | HTTP (api.apiyi.com:16888/v1) | 推奨 |
|---|---|---|---|
| TLS ハンドシェイクのオーバーヘッド | あり (300-800ms) | なし | HTTP ✅ |
| 接続確立速度 | 遅い (TLS ネゴシエーションが必要) | 速い (直接 TCP 接続) | HTTP ✅ |
| HTTP/2 ネゴシエーション | 自動的に HTTP/2 にアップグレードされる可能性あり | HTTP/1.1 強制 | HTTP ✅ |
| 内部呼び出しの安全性 | 高い (暗号化転送) | 中程度 (プレーンテキスト転送) | HTTP ⚠️ (内部利用可) |
| タイムアウトの安定性 | 中程度 (TLS タイムアウト + 読み取りタイムアウト) | 高い (読み取りタイムアウトのみ) | HTTP ✅ |
APIYI HTTP インターフェースの完全な設定例
import requests
# APIYI プラットフォーム HTTP ポートインターフェース設定
APIYI_HTTP_ENDPOINT = "http://api.apiyi.com:16888/v1"
APIYI_API_KEY = "YOUR_APIYI_API_KEY"
def generate_nano_banana_image(
prompt: str,
size: str = "4096x4096"
) -> dict:
"""
APIYI HTTP インターフェースを使用して Nano Banana Pro 画像を生成する
Args:
prompt: 画像生成プロンプト
size: 画像サイズ
Returns:
API レスポンス結果
"""
# 解像度に応じてタイムアウト時間を動的に調整
timeout_map = {
"1024x1024": 300, # 1K: 300秒
"2048x2048": 300, # 2K: 300秒
"4096x4096": 600 # 4K: 600秒
}
timeout = timeout_map.get(size, 600) # デフォルト 600秒
response = requests.post(
f"{APIYI_HTTP_ENDPOINT}/images/generations",
json={
"prompt": prompt,
"size": size,
"model": "nano-banana-pro",
"n": 1,
"response_format": "url" # または "b64_json"
},
headers={
"Authorization": f"Bearer {APIYI_API_KEY}",
"Content-Type": "application/json"
},
timeout=(10, timeout) # (接続タイムアウト, 読み取りタイムアウト)
)
response.raise_for_status()
return response.json()
# 使用例
try:
result = generate_nano_banana_image(
prompt="A photorealistic portrait of a cat",
size="4096x4096"
)
print(f"✅ 生成成功!")
print(f"画像 URL: {result['data'][0]['url']}")
print(f"サイズ: {result['data'][0]['size']}")
except requests.exceptions.Timeout:
print("❌ リクエストがタイムアウトしました。ネットワークを確認するか、後でもう一度お試しください。")
except requests.exceptions.HTTPError as e:
print(f"❌ API エラー: {e}")
except Exception as e:
print(f"❌ 未知のエラー: {e}")
💡 ベストプラクティス: 本番環境では、APIYI の HTTP ポートインターフェース (http://api.apiyi.com:16888/v1) を優先的に使用することをお勧めします。このインターフェースはプラットフォーム側で最適化されており、適切なタイムアウト時間と再試行戦略がデフォルトで構成されているため、特に 4K 画像生成シーンにおいて Nano Banana Pro API の呼び出し成功率を大幅に向上させることができます。
よくある質問
Q1: 600秒のタイムアウトを設定したのに、なぜタイムアウトが発生するのですか?
考えられる原因:
-
接続タイムアウトのみ設定され、読み取りタイムアウトが設定されていない:
# ❌ 誤り: timeout=600 は接続タイムアウトにのみ適用されます response = requests.post(url, json=data, timeout=600) # ✅ 正解: 接続タイムアウトと読み取りタイムアウトを個別に設定します response = requests.post(url, json=data, timeout=(10, 600)) -
中間プロキシやロードバランサーに、より短いタイムアウト制限がある:
- AWS ALB:デフォルトのアイドルタイムアウトは60秒
- Nginx:デフォルトの
proxy_read_timeoutは60秒 - Cloudflare Freeプラン:最大タイムアウトは100秒
解決策: APIYI の HTTP ポートインターフェースを使用してください。このインターフェースはプラットフォーム層でタイムアウト設定が最適化されています。
-
ネットワーク環境が不安定で、実際の生成時間が600秒を超えている:
- 2026年1月17日のピーク時には、一部のリクエストで180秒以上の時間を要しました
- 国際ネットワークの遅延により、さらに50〜100秒加算される場合があります
解決策: リトライメカニズムを実装し、APIYI プラットフォームの課金補填機能を利用してください。
Q2: HTTP インターフェースは安全ですか?盗聴される心配はありませんか?
セキュリティ分析:
| シーン | HTTP の安全性 | 推奨 |
|---|---|---|
| 内部ネットワーク呼び出し (VPC/プライベートネットワーク) | 高 (公衆網への露出なし) | ✅ HTTP 推奨 |
| 公衆網呼び出し (開発・テスト) | 中 (APIキー漏洩の可能性あり) | ⚠️ キーの管理に注意 |
| 公衆網呼び出し (本番環境) | 低 (平文転送) | ❌ HTTPS 優先 |
| VPN/専用線経由の呼び出し | 高 (VPN層で暗号化) | ✅ HTTP 推奨 |
ベストプラクティス:
- 内部環境: パフォーマンスが最適な HTTP インターフェースを使用してください。
- 公衆網環境: セキュリティ要件が高い場合は HTTPS インターフェースを使用し、安定性を優先する場合は HTTP インターフェースを使用して API キーを定期的にローテーションしてください。
- 混合環境: 機密性の低いプロンプトには HTTP を、機密性の高い内容には HTTPS を使用します。
Q3: 1K や 2K の画像でも 300 秒のタイムアウト設定が必要ですか?
推奨設定:
1K および 2K 画像の実際の生成時間は通常 30〜120 秒ですが、以下の理由から 300 秒のタイムアウト設定を推奨しています:
- ネットワークのゆらぎ: 生成時間が短くても、ネットワーク遅延により 30〜50 秒加算されることがあります。
- ピーク時の影響: 2026/1/17 の事象が示す通り、極端な状況下では生成時間が倍増する可能性があります。
- 十分なマージン: 300 秒に設定してもコストは増えませんが、不要なリトライを避けることができます。
実測データ (APIYI プラットフォーム統計):
| 解像度 | P50 (中央値) | P95 (95パーセンタイル) | P99 (99パーセンタイル) | 推奨タイムアウト |
|---|---|---|---|---|
| 1K | 45秒 | 90秒 | 150秒 | 300秒 |
| 2K | 65秒 | 120秒 | 180秒 | 300秒 |
| 4K | 120秒 | 170秒 | 250秒 | 600秒 |
結論: 1K/2K は 300 秒、4K は 600 秒に設定することで、99% 以上のケースをカバーできます。
Q4: タイムアウトの問題か、API の過負荷の問題かをどのように判断すればよいですか?
判別方法:
| エラーの種類 | 代表的なエラーメッセージ | HTTP ステータスコード | リトライ可否 |
|---|---|---|---|
| タイムアウトエラー | ReadTimeout, Connection timeout |
なし (クライアント側エラー) | ✅ リトライ可 |
| API 過負荷 | The model is overloaded |
503 または 429 | ✅ 待機後リトライ可 |
| API 利用不可 | The service is currently unavailable |
503 | ✅ 待機後リトライ可 |
| 認証エラー | Invalid API key |
401 | ❌ APIキーを確認 |
タイムアウトエラーの特徴:
except requests.exceptions.Timeout:
# クライアント側でタイムアウトが発生し、サーバーからの応答を受信できていない
print("リクエストタイムアウト")
except requests.exceptions.HTTPError as e:
if e.response.status_code == 503:
# サーバーが 503 を返し、過負荷であることを明示している
print("API 過負荷")
判断フロー:
- 例外の型が
Timeoutであれば、タイムアウトの問題です → タイムアウト時間を増やすか、HTTP インターフェースを使用してください。 - HTTP レスポンスを受け取り、ステータスコードが 503/429 であれば、API の過負荷です → 待機するか、他の API プロバイダーに切り替えてください。
- レスポンス内容に "overloaded" が含まれている場合は、Google の計算リソース不足です → APIYI の代替モデル(例:Seedream 4.5)の使用を検討してください。
まとめ
Nano Banana Pro API のタイムアウト切断に関する重要なポイント:
- タイムアウト設定: ネットワークのゆらぎやピーク時の影響を考慮し、1K/2K は 300 秒、4K は 600 秒の設定を推奨します。
- HTTP/2 の問題: HTTP/2 は長時間接続において TCP ヘッドオブラインブロッキングやストリーム識別子の枯渇問題が発生するため、HTTP/1.1 の強制使用を推奨します。
- HTTP ポートの利点: APIYI の HTTP インターフェース (http://api.apiyi.com:16888/v1) は、TLS ハンドシェイクのオーバーヘッドや HTTP/2 のネゴシエーションを回避し、安定性を向上させます。
- リトライ戦略: 一時的なネットワークのゆらぎに対応するため、タイムアウト時のリトライと指数バックオフを実装してください。
- プラットフォームの最適化: APIYI プラットフォームは、最適化されたタイムアウト設定、インテリジェントなリトライ、課金補填を提供し、4K 画像生成の成功率を大幅に向上させます。
Nano Banana Pro API の迅速な統合には、APIYI(apiyi.com)の利用をお勧めします。本番環境のデプロイに適した、最適化済み HTTP ポートインターフェース、適切なデフォルトタイムアウト設定、1K〜4K の全解像度対応を提供しています。
著者: APIYI 技術チーム | 技術的なご質問は、APIYI(apiyi.com)にアクセスして、その他の AI モデル連携ソリューションをご確認ください。
