Skip to main content
client.apps.realtime(app_id) abre un stream en vivo de los logs, el estado y los eventos del sistema de una aplicación. Con SquareCloud es un iterador que se consume con for; con AsyncSquareCloud es un iterador asíncrono que se consume con async for. Úsalo en un bloque with / async with para que al salir del bloque se cierre la conexión.
Con AsyncSquareCloud, apps.realtime(app_id) devuelve directamente un AsyncRealtime: no lo esperes con await. Un hilo lector en segundo plano entrega los eventos a tu event loop, así que no se ocupa ningún hilo del executor mientras esperas.

Eventos

Cada evento es un dict con event, data (el texto sin procesar del frame) e id (None cuando el frame no tiene).

El objeto status

Finalizar el stream

El bucle termina por sí solo cuando:
  • el servidor cierra la conexión limpiamente (cada conexión dura hasta 10 minutos);
  • el servidor envía REALTIME_DISCONNECTED;
  • sales del bucle con break (después sales del bloque with, lo que cierra la conexión);
  • llamas a stream.close(), desde cualquier hilo, incluso mientras el bucle espera datos o una reconexión (el bucle simplemente termina, no lanza ningún error).
close() es síncrono tanto en Realtime como en AsyncRealtime. Para seguir observando más allá de 10 minutos, abre un nuevo stream cuando termine el bucle.

Reconexión

Una conexión caída, o que el servidor delegue la reconexión en el cliente (REALTIME_RECONNECT), reabre el stream por sí sola:
  • hasta 3 veces seguidas; cualquier evento logs o status reinicia el contador;
  • cada reapertura al menos 5,5 s después de la apertura anterior, para respetar el ritmo de la API de una apertura cada 5 segundos por aplicación.
Tras 3 reconexiones fallidas, el bucle lanza un SquareCloudAPIError con NETWORK_ERROR. Cada apertura es un GET, así que un error de red al abrir también se reintenta hasta max_retries veces; una apertura que sigue fallando lanza el error.

Límites y errores

  • 5 conexiones simultáneas por cuenta y 30 por aplicación, sumando todos los usuarios. Superarlas da 429 REALTIME_MAX_CONNECTIONS o REALTIME_MAX_CONNECTIONS_APP.
  • El estado HTTP se comprueba antes del streaming, así que estos errores (y el 404 de una aplicación desconocida) se lanzan en la primera iteración.
  • El timeout solo cubre la apertura, hasta que llegan los encabezados de la respuesta. El stream en sí no tiene timeout: una conexión semiabierta (un portátil que sale de suspensión) espera hasta que llames a close().