Errore 504: cosa fare quando gemini-3.5-flash fallisce
Un 504 significa che il gateway è andato in timeout attendendo il modello a monte: la richiesta è stata inviata, ma il monte non ha risposto entro il timeout del gateway.
504 Gateway Timeout significa che il gateway ha smesso di attendere la risposta dell’upstream. La richiesta è stata inoltrata, ma nessun risultato è tornato entro il limite. Accorciare l’output, attivare lo streaming o ridurre max_tokens di solito risolve.
gemini-3.5-flash è fornito da Google. Tutto in questa pagina — cause, soluzioni e dati misurati — è ricavato dal comportamento reale di questo modello al livello del gateway.
Su questo gateway, la causa più comune è: Il monte ha impiegato più del timeout consentito dal gateway. La prima azione consigliata è: Passa all'output in streaming.
Cause comuni
- Il monte ha impiegato più del timeout consentito dal gateway
- Un contesto lungo ha aumentato il tempo di inferenza
- Un nodo a monte è bloccato
- Una richiesta non in streaming con output molto lungo
Come risolvere
- Passa all'output in streaming
- Accorcia il contesto e riduci max_tokens
- Riprova dopo una breve attesa
- Usa un modello con inferenza più rapida
Retry con backoff esponenziale
Il codice qui sotto ritenta quando gemini-3.5-flash restituisce 504: fino a 5 tentativi, con attesa crescente e jitter casuale per evitare che le chiamate concorrenti ritentino insieme. Leggi base URL e API key dalle variabili d’ambiente, non inserirle hardcoded.
import os, time, random
import requests
BASE = os.getenv("OPENAI_BASE_URL") # e.g. https://<your-gateway>/v1
KEY = os.getenv("OPENAI_API_KEY")
MODEL = 'gemini-3.5-flash'
def chat(messages, retries=5):
"""Retry with exponential backoff + jitter."""
for i in range(retries):
try:
r = requests.post(
BASE + "/chat/completions",
headers={"Authorization": "Bearer " + KEY},
json={"model": MODEL, "messages": messages, "stream": True},
timeout=60,
)
if r.status_code == 429 or r.status_code >= 500:
time.sleep(min(2 ** i + random.uniform(0, 1), 30))
continue
r.raise_for_status()
return r.json()
except requests.exceptions.Timeout:
time.sleep(min(2 ** i + random.uniform(0, 1), 30))
raise RuntimeError("gave up after " + str(retries) + " retries")
print(chat([{"role": "user", "content": "hello"}]))Dati chiave di questo modello
| TPS | 1669.89 |
|---|---|
| Latenza media | 3330 ms |
| Tasso di successo | 100% |
| Endpoint API | https://api.airai.cc/v1 |
| Compatibile con OpenAI | OpenAI-compatible |
| Fornitore | |
|---|---|
| Contesto | 1M |
| Funzionalità | Reasoning, Tools, Files, Vision, Audio |
| Formati API | openai, openai-response, openai-response-compact, anthropic, gemini, openai-alpha-search |
| Formula di fatturazione | p * 1.5 + cr * 0.15 + ai * 1.5 + c * 9 |
Domande frequenti
Condividere una key tra più servizi rende 504 più probabile?
Sia alzare il limite del piano sia ridurre la frequenza delle chiamate aiuta. La fatturazione segue p * 1.5 + cr * 0.15 + ai * 1.5 + c * 9: senza output nessun addebito. Con fatturazione p * 1.5 + cr * 0.15 + ai * 1.5 + c * 9, il costo degli output lunghi deriva soprattutto dai token di output. Controlla prima saldo e limiti di velocità nella console, poi il codice. Stimando il costo da p * 1.5 + cr * 0.15 + ai * 1.5 + c * 9, includi anche il budget per i ritenti.
504 può causare perdita di dati?
Questo errore non dipende dalle capacità del modello, è a livello di gateway. Di solito è momentaneo e si risolve da sé. I tag di capacità di questo modello sono Reasoning, Tools, Files, Vision, Audio. Con un tasso di successo di 100%, un 504 occasionale è normale variabilità. Se l’errore continua per diversi minuti, contatta il supporto della piattaforma per confermare lo stato upstream. Stabilisci prima se è a livello di account o di modello: i due casi si gestiscono in modo completamente diverso.
In staging va bene ma in produzione arriva 504: cosa cambia?
Raggruppa gli errori per orario e per nodo; lo schema di solito è evidente. Il tasso di successo 100% è una media per nodo, quindi un nodo debole trascina il dato complessivo. Registra l’id della richiesta a ogni fallimento: serve più del codice di stato. Riproduci il caso prima in ambiente di test con lo stesso corpo della richiesta.
Cambiare modello permette di evitare 504 su gemini-3.5-flash?
Tieni pronto anche un modello di riserva. Un fallback a livello di architettura è più affidabile che correggere ogni errore uno per uno. Questo modello di Google ha più nodi upstream tra cui il gateway può commutare. Tieni pronto un modello di riserva più leggero, così il flusso principale non si interrompe. Metti il nome del modello in configurazione, così cambiare upstream non richiede modifiche al codice.
Altri errori su questo modello
- gemini-3.5-flash: errore 429 — cause e soluzioni
- gemini-3.5-flash: errore timeout — cause e soluzioni
- gemini-3.5-flash: errore 500 — cause e soluzioni
- gemini-3.5-flash: errore 502 — cause e soluzioni
- gemini-3.5-flash: errore 503 — cause e soluzioni
- gemini-3.5-flash: errore 401 — cause e soluzioni
- gemini-3.5-flash: errore 403 — cause e soluzioni
- gemini-3.5-flash: errore 400 — cause e soluzioni
Altri modelli con lo stesso errore
- gpt-5
- claude-opus-5
- gemini-2.5-pro
- deepseek-v4-pro
- grok-4.3
- llama-3.3-70b-instruct
- qvq-max
- qwq-32b
- glm-5
- MiniMax-M3
- kimi-k3
- hy3
- doubao-seed-evolving
- mimo-v2.5
- gpt-4o
- claude-opus-4-6
Dati aggiornati: 2026-10-10 18:35