Sering mengalami error HTTPSConnectionPool Read timed out saat memanggil Nano Banana Pro API untuk membuat gambar 4K? Hal ini terjadi karena pengaturan timeout default pada klien HTTP tidak mampu mengimbangi karakteristik inferensi jangka panjang dari Nano Banana Pro. Artikel ini akan membedah secara sistematis 3 akar masalah putusnya koneksi karena timeout dan memberikan solusi konfigurasi timeout optimal untuk berbagai resolusi.
Nilai Utama: Setelah membaca artikel ini, Anda akan menguasai teknik konfigurasi timeout Nano Banana Pro API, solusi untuk masalah kompatibilitas HTTP/2, serta cara menghindari gangguan transmisi streaming melalui antarmuka port HTTP guna memastikan stabilitas pembuatan gambar 4K.

Poin Utama Konfigurasi Timeout Nano Banana Pro API
| Resolusi Gambar | Durasi Pembuatan Asli | Pengaturan Timeout Rekomendasi | Margin Keamanan | Skenario Penggunaan |
|---|---|---|---|---|
| 1K (1024×1024) | 30-90 detik | 300 detik | +210 detik | Pembuatan gambar standar |
| 2K (2048×2048) | 50-120 detik | 300 detik | +180 detik | Pembuatan gambar HD |
| 4K (4096×4096) | 100-170 detik | 600 detik | +430 detik | Pembuatan gambar Ultra HD |
| Skenario Ekstrem (Fluktuasi Jaringan/Waktu Sibuk) | Bisa mencapai 180+ detik | 600 detik | – | Rekomendasi lingkungan produksi |
Akar Masalah Timeout pada Nano Banana Pro API
Perbedaan Utama: Nano Banana Pro adalah Model Bahasa Besar untuk gambar terbaru dari Google yang berbasis pada inferensi TPU. Waktu pembuatannya jauh lebih lama dibandingkan model teks. Pengaturan timeout default pada klien HTTP standar (biasanya 30-60 detik) sama sekali tidak cocok dengan waktu pemrosesan aslinya, sehingga menyebabkan koneksi sering terputus karena timeout.
Pada 17 Januari 2026, Nano Banana Pro API sempat mengalami lonjakan waktu pembuatan dari 20-40 detik menjadi 180 detik atau lebih karena kontrol risiko global Google dan keterbatasan sumber daya komputasi. Beberapa platform agregator API bahkan harus memicu mekanisme kompensasi log penagihan untuk permintaan yang melebihi 180 detik. Kejadian ini menekankan betapa pentingnya menyediakan margin yang cukup dalam pengaturan timeout.
💡 Saran Teknis: Untuk pengembangan praktis, kami menyarankan pemanggilan Nano Banana Pro API melalui platform APIYI (apiyi.com). Platform ini menyediakan antarmuka HTTP yang dioptimalkan khusus untuk inferensi jangka panjang (http://api.apiyi.com:16888/v1), dengan konfigurasi timeout default yang masuk akal serta mendukung pembuatan gambar resolusi penuh 1K-4K, sehingga efektif menghindari masalah koneksi terputus.
Penyebab Utama 1: Pengaturan Timeout Bawaan Klien HTTP Terlalu Singkat
Jebakan Timeout Bawaan pada Library HTTP Standar
Pengaturan timeout bawaan pada library HTTP standar di sebagian besar bahasa pemrograman sering kali sangat tidak memadai:
| Library HTTP | Timeout Koneksi Bawaan | Timeout Pembacaan Bawaan | Apakah Adaptif dengan Nano Banana Pro |
|---|---|---|---|
| Python requests | Tanpa Batas | Tanpa Batas (tapi sebenarnya dibatasi sistem) | ❌ Perlu diatur secara eksplisit |
| Python httpx | 5 detik | 5 detik | ❌ Sangat kurang |
| Node.js axios | Tanpa Batas | Tanpa Batas | ⚠️ Perlu verifikasi timeout sebenarnya |
| Java HttpClient | Tanpa Batas | 30 detik (JDK 11+) | ❌ Kurang |
| Go http.Client | Tanpa Batas | Tanpa Batas (tapi dibatasi Transport) | ⚠️ Perlu konfigurasi Transport |
Masalah Timeout Tersembunyi pada Python requests:
Meskipun dokumentasi library requests mengklaim tidak ada batasan timeout secara default, kenyataannya hal ini dipengaruhi oleh timeout TCP sistem operasi dan timeout socket dasar, yang biasanya akan memutuskan koneksi dalam waktu sekitar 60-120 detik. Hal ini menyebabkan banyak pengembang mengira bahwa "tidak mengatur timeout berarti tidak akan ada timeout", padahal mereka justru mengalami pemutusan koneksi yang tidak terduga di lingkungan produksi.
import requests
# ❌ Salah: Timeout tidak diatur secara eksplisit, sebenarnya akan timeout dalam sekitar 60-120 detik
response = requests.post(
"https://api.example.com/v1/images/generations",
json={"prompt": "Hasilkan gambar 4K", "size": "4096x4096"},
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
# Ketika waktu pembuatan melebihi 120 detik, akan muncul pengecualian ReadTimeout
Metode Konfigurasi Timeout yang Benar
Solusi 1: Konfigurasi Timeout Eksplisit pada Python requests
import requests
# ✅ Benar: Mengatur timeout secara eksplisit
response = requests.post(
"https://api.example.com/v1/images/generations",
json={
"prompt": "A futuristic city with neon lights",
"size": "4096x4096", # Resolusi 4K
"model": "nano-banana-pro"
},
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=(10, 600) # (Timeout koneksi, Timeout pembacaan) = (10 detik, 600 detik)
)
Penjelasan parameter timeout:
- Timeout Koneksi (10 detik): Waktu tunggu maksimum untuk membangun koneksi TCP, biasanya 10 detik sudah cukup.
- Timeout Pembacaan (600 detik): Waktu tunggu maksimum untuk respon data dari server, direkomendasikan 600 detik untuk gambar 4K.
Solusi 2: Klien Kustom Python httpx
import httpx
# Buat klien khusus, paksa menggunakan HTTP/1.1 dan atur timeout yang lama
client = httpx.Client(
timeout=httpx.Timeout(
connect=10.0, # Timeout koneksi 10 detik
read=600.0, # Timeout pembacaan 600 detik
write=30.0, # Timeout penulisan 30 detik
pool=10.0 # Timeout pool koneksi 10 detik
),
http2=False, # ⚠️ Kunci: Paksa menggunakan HTTP/1.1 untuk menghindari masalah kompatibilitas HTTP/2
limits=httpx.Limits(
max_connections=10,
max_keepalive_connections=5
)
)
# Gunakan klien khusus untuk memanggil 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"}
)
# Tutup klien
client.close()
Lihat contoh konfigurasi httpx asinkron lengkap
import httpx
import asyncio
async def generate_image_async():
"""Hasilkan gambar secara asinkron, mendukung timeout durasi lama"""
async with httpx.AsyncClient(
timeout=httpx.Timeout(
connect=10.0,
read=600.0, # Direkomendasikan 600 detik untuk gambar 4K
write=30.0,
pool=10.0
),
http2=False, # Paksa 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()
# Jalankan fungsi asinkron
result = asyncio.run(generate_image_async())
print(result)

🎯 Praktik Terbaik: Saat beralih ke API Nano Banana Pro, disarankan untuk menguji waktu pembuatan aktual untuk berbagai resolusi melalui platform APIYI (apiyi.com) terlebih dahulu. Platform ini menyediakan antarmuka port HTTP (http://api.apiyi.com:16888/v1), yang secara default telah mengoptimalkan konfigurasi timeout, sehingga mendukung verifikasi cepat apakah pengaturan timeout Anda sudah masuk akal.
Akar Masalah 2: Masalah Kompatibilitas Protokol HTTP/2 dalam Transmisi Streaming Koneksi Panjang
Cacat Desain HTTP/2 dan Konfliknya dengan Nano Banana Pro
Meskipun tujuan desain HTTP/2 adalah untuk meningkatkan performa, terdapat beberapa masalah kompatibilitas serius saat menangani transmisi streaming koneksi panjang:
Masalah 1: Head-of-Line Blocking pada Lapisan TCP
HTTP/2 menyelesaikan masalah head-of-line blocking di lapisan aplikasi pada HTTP/1.1 melalui multiplexing, namun memperkenalkan masalah head-of-line blocking baru di lapisan TCP. Semua stream HTTP/2 menggunakan koneksi TCP tunggal yang sama, sehingga hilangnya paket (packet loss) TCP apa pun akan memblokir transmisi semua stream.
HTTP/1.1 (6 koneksi konkuren):
Koneksi 1: [Stream A] ━━━━━━━━━▶
Koneksi 2: [Stream B] ━━━━━━━━━▶ ✅ Packet loss hanya memengaruhi satu stream
Koneksi 3: [Stream C] ━━━━━━━━━▶
HTTP/2 (Multiplexing koneksi tunggal):
Koneksi 1: [Stream A][Stream B][Stream C] ━━━━━━━━━▶
↑ Packet loss TCP memblokir semua stream ❌
Masalah 2: Kehabisan Identifier Stream (Stream Identifier Exhaustion)
Stream Identifier (Stream ID) pada HTTP/2 adalah integer 31-bit dengan nilai maksimum 2^31-1 (sekitar 2,1 miliar). Koneksi yang berlangsung lama dapat menghabiskan identifier stream yang tersedia, dan identifier stream tidak dapat digunakan kembali, sehingga koneksi baru harus dibuat.
Masalah 3: Kualitas Implementasi HTTP/2 pada API Relay yang Bervariasi
Banyak platform relay API atau reverse proxy memiliki bug dalam implementasi HTTP/2 mereka, terutama saat menangani transmisi streaming yang lama:
- Penanganan reset stream (RST_STREAM) yang tidak tepat, menyebabkan koneksi terputus secara tiba-tiba.
- Kesalahan manajemen frame WINDOW_UPDATE, yang menyebabkan kegagalan kontrol aliran (flow control).
- Pemicuan frame GOAWAY yang salah, memaksa koneksi ditutup.
Perbandingan Hasil Pengujian HTTP/2 vs HTTP/1.1 dalam Skenario Nano Banana Pro
| Metrik | HTTP/1.1 | HTTP/2 | Rekomendasi |
|---|---|---|---|
| Stabilitas Koneksi | Tinggi (Koneksi independen, tidak saling memengaruhi) | Rendah (Koneksi tunggal multiplexing, packet loss memengaruhi semua stream) | HTTP/1.1 ✅ |
| Dukungan Koneksi Panjang | Matang (Mekanisme Keep-Alive stabil) | Tidak stabil (Masalah kehabisan identifier stream) | HTTP/1.1 ✅ |
| Penanganan Timeout | Sederhana dan jelas (Timeout tingkat koneksi) | Kompleks (Timeout tingkat stream + tingkat koneksi) | HTTP/1.1 ✅ |
| Kompatibilitas API Relay | Sangat tinggi (Didukung semua platform) | Bervariasi (Beberapa platform memiliki bug) | HTTP/1.1 ✅ |
| Tingkat Keberhasilan Generasi 4K Nano Banana Pro | 95%+ | 60-70% | HTTP/1.1 ✅ |
Solusi: Paksa Gunakan HTTP/1.1 dan Gunakan Port HTTP
Solusi 1: Paksa HTTP/1.1 pada Python httpx
import httpx
# Paksa gunakan HTTP/1.1 untuk menghindari masalah kompatibilitas HTTP/2
client = httpx.Client(
http2=False, # ⚠️ Pengaturan kunci: nonaktifkan HTTP/2
timeout=httpx.Timeout(read=600.0)
)
response = client.post(
"http://api.apiyi.com:16888/v1/images/generations", # Gunakan port HTTP
json={"prompt": "...", "size": "4096x4096"},
headers={"Authorization": "Bearer YOUR_API_KEY"}
)
Solusi 2: Python requests (Default HTTP/1.1)
import requests
# Library requests menggunakan HTTP/1.1 secara default, tidak perlu konfigurasi tambahan
response = requests.post(
"http://api.apiyi.com:16888/v1/images/generations",
json={"prompt": "...", "size": "4096x4096"},
headers={"Authorization": "Bearer YOUR_API_KEY"},
timeout=(10, 600)
)
Solusi 3: Paksa HTTP/1.1 pada Node.js axios
const axios = require('axios');
const http = require('http');
// Buat agent khusus untuk HTTP/1.1
const agent = new http.Agent({
keepAlive: true,
maxSockets: 10,
timeout: 600000 // 600 detik
});
// Konfigurasi axios untuk menggunakan agent kustom
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, // Gunakan agent HTTP/1.1
timeout: 600000 // Timeout 600 detik
}
);

💰 Optimasi Biaya: Untuk proyek yang memerlukan stabilitas tinggi dalam pembuatan gambar 4K, disarankan untuk memanggil API Nano Banana Pro melalui platform APIYI (apiyi.com). Platform ini menyediakan antarmuka port HTTP khusus (http://api.apiyi.com:16888/v1) yang secara default menggunakan protokol HTTP/1.1 untuk menghindari masalah kompatibilitas HTTP/2, sekaligus menawarkan metode penagihan yang lebih ekonomis, sangat cocok untuk implementasi di lingkungan produksi.
Akar Masalah 3: Efek Kumulatif antara Streaming dan Fluktuasi Jaringan
Karakteristik Respons Non-Streaming pada Nano Banana Pro
Berbeda dengan Model Bahasa Besar penghasil teks seperti GPT-4 atau Claude, API Nano Banana Pro tidak menggunakan streaming untuk mengirimkan gambar. Seluruh proses generasinya adalah:
- Fase Permintaan (1-3 detik): Klien mengirim permintaan ke server.
- Fase Inferensi (30-170 detik): Server membuat gambar di TPU, klien tidak menerima data respons apa pun.
- Fase Respons (1-5 detik): Server mengembalikan data gambar lengkap dalam format base64.
Masalah Utama: Selama fase inferensi yang berlangsung 30-170 detik, koneksi HTTP klien benar-benar menganggur (idle). Hanya ada TCP Keep-Alive yang menjaga koneksi tetap hidup tanpa adanya pengiriman data di lapisan aplikasi. Hal ini mengakibatkan:
- Perangkat jaringan perantara (NAT, firewall, proxy) mungkin menganggap koneksi sudah terputus dan menutupnya secara sepihak.
- Di lingkungan jaringan yang lemah, koneksi yang lama menganggur lebih rentan terputus.
- Beberapa penyedia layanan cloud memiliki batas waktu (timeout) koneksi idle pada Load Balancer mereka (misalnya AWS ALB default-nya 60 detik).
Dampak Fluktuasi Jaringan Terhadap Timeout
| Lingkungan Jaringan | Waktu Generasi Aktual | Dampak Latensi Jaringan | Pengaturan Timeout yang Disarankan |
|---|---|---|---|
| Intranet/IDC Stabil | 100 detik | +10-20 detik | 300 detik (Margin 180 detik) |
| Broadband Rumah/Jaringan Seluler | 100 detik | +30-50 detik | 600 detik (Margin 450 detik) |
| Jaringan Internasional/VPN | 100 detik | +50-100 detik | 600 detik (Margin 400 detik) |
| Periode Puncak (Kejadian 17/1/2026) | 180 detik | +20-40 detik | 600 detik (Margin 380 detik) |
Strategi Menghadapi Masalah: Timeout + Retry + Degradasi
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("图像生成失败,请稍后重试")
🚀 Mulai Cepat: Direkomendasikan menggunakan platform APIYI (apiyi.com) untuk integrasi cepat API Nano Banana Pro. Platform ini menawarkan keunggulan berikut:
- Antarmuka Port HTTP: http://api.apiyi.com:16888/v1, menghindari beban overhead jabat tangan (handshake) HTTPS.
- Konfigurasi Timeout yang Dioptimalkan: Secara default mendukung timeout hingga 600 detik, mencakup skenario pembuatan gambar 4K.
- Mekanisme Retry Cerdas: Lapisan platform otomatis menangani timeout sementara untuk meningkatkan tingkat keberhasilan.
- Kompensasi Biaya: Permintaan yang melebihi 180 detik secara otomatis memicu kompensasi biaya untuk menghindari pemborosan.
Keunggulan Antarmuka Port HTTP Platform APIYI
Mengapa Merekomendasikan Penggunaan HTTP daripada HTTPS?
| Fitur | HTTPS (api.apiyi.com/v1) | HTTP (api.apiyi.com:16888/v1) | Rekomendasi |
|---|---|---|---|
| Overhead Handshake TLS | Ada (300-800ms) | Tidak ada | HTTP ✅ |
| Kecepatan Pembuatan Koneksi | Lambat (Perlu negosiasi TLS) | Cepat (Koneksi TCP langsung) | HTTP ✅ |
| Negosiasi HTTP/2 | Mungkin otomatis upgrade ke HTTP/2 | Dipaksa ke HTTP/1.1 | HTTP ✅ |
| Keamanan Panggilan Intranet | Lebih Tinggi (Transmisi Terenkripsi) | Menengah (Transmisi Teks Biasa) | HTTP ⚠️ (Bisa di intranet) |
| Stabilitas Timeout | Menengah (Timeout TLS + Timeout Baca) | Tinggi (Hanya Timeout Baca) | HTTP ✅ |
Contoh Konfigurasi Lengkap Antarmuka HTTP APIYI
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}")
💡 Praktik Terbaik: Dalam lingkungan produksi, disarankan untuk memprioritaskan penggunaan antarmuka port HTTP APIYI (http://api.apiyi.com:16888/v1). Antarmuka ini telah dioptimalkan oleh platform dengan pengaturan timeout dan strategi retry yang masuk akal, yang secara signifikan meningkatkan tingkat keberhasilan pemanggilan API Nano Banana Pro, terutama dalam skenario pembuatan gambar 4K.
Pertanyaan Umum (FAQ)
Q1: Mengapa saya sudah mengatur batas waktu (timeout) 600 detik tapi tetap saja terjadi timeout?
Kemungkinan penyebab:
-
Hanya mengatur timeout koneksi, bukan timeout pembacaan:
# ❌ Salah: timeout=600 hanya berlaku untuk timeout koneksi response = requests.post(url, json=data, timeout=600) # ✅ Benar: Atur timeout koneksi dan pembacaan secara terpisah response = requests.post(url, json=data, timeout=(10, 600)) -
Proxy perantara atau Load Balancer memiliki batasan timeout yang lebih pendek:
- AWS ALB default idle timeout adalah 60 detik
- Nginx default
proxy_read_timeoutadalah 60 detik - Paket Cloudflare Free memiliki timeout maksimum 100 detik
Solusi: Gunakan antarmuka port HTTP dari APIYI, karena antarmuka ini telah dioptimalkan konfigurasi timeout-nya di tingkat platform.
-
Lingkungan jaringan tidak stabil, waktu pembuatan aktual melebihi 600 detik:
- Pada jam sibuk tanggal 17 Januari 2026, beberapa permintaan memakan waktu lebih dari 180 detik
- Latensi jaringan lintas negara bisa menambah waktu 50-100 detik
Solusi: Implementasikan mekanisme retry (coba kembali) dan gunakan fitur kompensasi penagihan dari platform APIYI.
Q2: Apakah antarmuka HTTP aman? Mungkinkah disadap?
Analisis Keamanan:
| Skenario | Keamanan HTTP | Rekomendasi |
|---|---|---|
| Panggilan Jaringan Internal (VPC/Jaringan Pribadi) | Tinggi (Tidak terekspos ke publik) | ✅ Direkomendasikan HTTP |
| Panggilan Jaringan Publik (Pengembangan & Pengujian) | Menengah (API Key berisiko bocor) | ⚠️ Perhatikan keamanan Key |
| Panggilan Jaringan Publik (Lingkungan Produksi) | Rendah (Transmisi teks biasa) | ❌ Prioritaskan HTTPS |
| Panggilan melalui VPN/Jalur Khusus | Tinggi (Enkripsi di lapisan VPN) | ✅ Direkomendasikan HTTP |
Praktik Terbaik:
- Lingkungan Internal: Gunakan antarmuka HTTP untuk performa terbaik.
- Lingkungan Publik: Jika persyaratan keamanan tinggi, gunakan antarmuka HTTPS; jika memprioritaskan stabilitas, gunakan antarmuka HTTP dan ganti API Key secara berkala.
- Lingkungan Campuran: Gunakan HTTP untuk petunjuk yang tidak sensitif, dan HTTPS untuk konten sensitif.
Q3: Apakah gambar 1K dan 2K juga perlu diatur timeout 300 detik?
Pengaturan yang Direkomendasikan:
Meskipun waktu pembuatan aktual untuk gambar 1K dan 2K biasanya antara 30-120 detik, kami tetap menyarankan pengaturan timeout 300 detik karena alasan berikut:
- Fluktuasi Jaringan: Meskipun waktu pembuatan singkat, latensi jaringan bisa menambah waktu 30-50 detik.
- Dampak Jam Sibuk: Kejadian pada 17/1/2026 menunjukkan bahwa dalam kondisi ekstrem, waktu pembuatan bisa berlipat ganda.
- Margin yang Cukup: Timeout 300 detik tidak menambah biaya apa pun, namun dapat menghindari retry yang tidak perlu.
Data Pengujian Aktual (Statistik platform APIYI):
| Resolusi | P50 (Median) | P95 (Persentil ke-95) | P99 (Persentil ke-99) | Rekomendasi Timeout |
|---|---|---|---|---|
| 1K | 45 detik | 90 detik | 150 detik | 300 detik |
| 2K | 65 detik | 120 detik | 180 detik | 300 detik |
| 4K | 120 detik | 170 detik | 250 detik | 600 detik |
Kesimpulan: Gunakan 300 detik untuk 1K/2K, dan 600 detik untuk 4K untuk mencakup lebih dari 99% skenario.
Q4: Bagaimana cara membedakan masalah timeout dengan masalah beban berlebih (overload) pada API?
Metode Perbedaan:
| Tipe Kesalahan | Pesan Kesalahan Tipikal | Kode Status HTTP | Dapat Diulang? |
|---|---|---|---|
| Kesalahan Timeout | ReadTimeout, Connection timeout |
Tidak ada (Kesalahan klien) | ✅ Ya |
| API Overload | The model is overloaded |
503 atau 429 | ✅ Tunggu lalu ulangi |
| API Tidak Tersedia | The service is currently unavailable |
503 | ✅ Tunggu lalu ulangi |
| Kesalahan Autentikasi | Invalid API key |
401 | ❌ Periksa API Key |
Karakteristik Kesalahan Timeout:
except requests.exceptions.Timeout:
# Timeout di sisi klien, tidak menerima respons dari server
print("Permintaan timeout")
except requests.exceptions.HTTPError as e:
if e.response.status_code == 503:
# Server mengembalikan 503, jelas menunjukkan beban berlebih
print("API Overload")
Alur Keputusan:
- Jika tipe pengecualian adalah
Timeout, berarti itu masalah timeout → tambah waktu timeout atau gunakan antarmuka HTTP. - Jika menerima respons HTTP dengan kode status 503/429, berarti API overload → tunggu sebentar atau beralih ke penyedia API lain.
- Jika isi respons mengandung "overloaded", berarti sumber daya komputasi Google tidak mencukupi → pertimbangkan untuk menggunakan model cadangan dari APIYI (seperti Seedream 4.5).
Ringkasan
Poin-poin inti mengenai pemutusan timeout pada Nano Banana Pro API:
- Konfigurasi Timeout: Direkomendasikan 300 detik untuk 1K/2K dan 600 detik untuk 4K guna mengatasi fluktuasi jaringan dan dampak jam sibuk.
- Masalah HTTP/2: HTTP/2 dalam skenario koneksi panjang memiliki masalah TCP head-of-line blocking dan kehabisan identifier aliran; disarankan untuk memaksa penggunaan HTTP/1.1.
- Keunggulan Port HTTP: Antarmuka HTTP APIYI (http://api.apiyi.com:16888/v1) menghindari biaya handshake TLS dan negosiasi HTTP/2, sehingga meningkatkan stabilitas.
- Strategi Retry: Terapkan retry saat timeout + exponential backoff untuk menangani fluktuasi jaringan sementara.
- Optimasi Platform: Platform APIYI menyediakan konfigurasi timeout yang dioptimalkan, retry cerdas, dan kompensasi penagihan, yang secara signifikan meningkatkan tingkat keberhasilan pembuatan gambar 4K.
Direkomendasikan untuk mengintegrasikan Nano Banana Pro API dengan cepat melalui APIYI apiyi.com. Platform ini menyediakan antarmuka port HTTP yang dioptimalkan secara khusus, dengan timeout default yang wajar, mendukung pembuatan gambar resolusi penuh 1K-4K, dan sangat cocok untuk penerapan di lingkungan produksi.
Penulis: Tim Teknis APIYI | Jika ada pertanyaan teknis, silakan kunjungi APIYI apiyi.com untuk mendapatkan lebih banyak solusi integrasi model AI.
