client.apps.realtime(app_id) apre un flusso in tempo reale dei log, dello stato e degli eventi di sistema di un’app. Con SquareCloud è un iteratore da consumare con for; con AsyncSquareCloud è un iteratore asincrono da consumare con async for. Usalo in un blocco with / async with, così uscire dal blocco chiude la connessione.
- Sincrono
- Asincrono
AsyncSquareCloud, apps.realtime(app_id) restituisce direttamente un AsyncRealtime: non usare await. Un thread lettore in background passa gli eventi al tuo event loop, quindi nessun thread dell’executor resta occupato mentre attendi.
Eventi
Ogni evento è un dict conevent, data (il testo grezzo del frame) e id (None quando il frame non ne ha).
L’oggetto status
Terminare il flusso
Il ciclo termina da solo quando:- il server chiude la connessione in modo pulito (ogni connessione dura fino a 10 minuti);
- il server invia
REALTIME_DISCONNECTED; - esci dal ciclo con
break(poi esci dal bloccowith, che chiude la connessione); - chiami
stream.close(), da qualsiasi thread, anche mentre il ciclo attende dati o una riconnessione (il ciclo semplicemente termina, non solleva eccezioni).
close() è sincrono sia su Realtime sia su AsyncRealtime. Per continuare a osservare oltre i 10 minuti, apri un nuovo flusso quando il ciclo termina.
Riconnessione
Una connessione interrotta, o il server che delega la riconnessione al client (REALTIME_RECONNECT), riapre il flusso da sola:
- fino a 3 volte di fila; qualsiasi evento
logsostatusazzera il conteggio; - ogni riapertura avviene almeno 5,5 s dopo l’apertura precedente, per restare sotto il ritmo dell’API di un’apertura ogni 5 secondi per app.
SquareCloudAPIError con NETWORK_ERROR. Ogni apertura è un GET, quindi anche un errore di rete durante l’apertura viene ripetuto fino a max_retries volte; un’apertura che continua a fallire solleva un’eccezione.
Limiti ed errori
- 5 connessioni simultanee per account e 30 per app, considerando tutti gli utenti. Superarle produce 429
REALTIME_MAX_CONNECTIONSoREALTIME_MAX_CONNECTIONS_APP. - Lo status HTTP viene controllato prima dello streaming, quindi questi errori (e il 404 per un’app sconosciuta) vengono sollevati alla prima iterazione.
- Il timeout copre solo l’apertura, fino all’arrivo degli header della risposta. Il flusso in sé non ha timeout: una connessione semiaperta (un portatile che si riattiva dalla sospensione) resta in attesa finché non chiami
close().

