client.apps.realtime(app_id) ouvre un flux en direct des logs, du statut et des événements système d’une application. Avec SquareCloud, c’est un itérateur consommé avec for ; avec AsyncSquareCloud, c’est un itérateur asynchrone consommé avec async for. Utilisez-le dans un bloc with / async with afin que la sortie du bloc ferme la connexion.
- Synchrone
- Asynchrone
AsyncSquareCloud, apps.realtime(app_id) renvoie directement un AsyncRealtime : ne l’utilisez pas avec await. Un thread de lecture en arrière-plan transmet les événements à votre boucle d’événements, de sorte qu’aucun thread d’exécution n’est occupé pendant l’attente.
Événements
Chaque événement est un dict avecevent, data (le texte brut de la trame) et id (None lorsque la trame n’en a pas).
L’objet status
Fin du flux
La boucle se termine d’elle-même lorsque :- le serveur ferme proprement la connexion (chaque connexion dure jusqu’à 10 minutes) ;
- le serveur envoie
REALTIME_DISCONNECTED; - vous sortez de la boucle avec
break(puis quittez le blocwith, ce qui ferme la connexion) ; - vous appelez
stream.close(), depuis n’importe quel thread, même pendant que la boucle attend des données ou une reconnexion (la boucle se termine simplement, elle ne lève pas d’erreur).
close() est synchrone sur Realtime comme sur AsyncRealtime. Pour continuer à observer au-delà de 10 minutes, ouvrez un nouveau flux lorsque la boucle se termine.
Reconnexion
Une connexion interrompue, ou le serveur qui confie la reconnexion au client (REALTIME_RECONNECT), rouvre le flux automatiquement :
- jusqu’à 3 fois d’affilée ; tout événement
logsoustatusremet le compteur à zéro ; - chaque réouverture au moins 5,5 s après l’ouverture précédente, pour rester sous le rythme de l’API d’une ouverture toutes les 5 secondes par application.
SquareCloudAPIError avec NETWORK_ERROR. Chaque ouverture est un GET : une erreur réseau pendant l’ouverture fait donc aussi l’objet de nouvelles tentatives, jusqu’à max_retries fois ; une ouverture qui échoue encore lève une erreur.
Limites et erreurs
- 5 connexions simultanées par compte et 30 par application, tous utilisateurs confondus. Les dépasser donne 429
REALTIME_MAX_CONNECTIONSouREALTIME_MAX_CONNECTIONS_APP. - Le statut HTTP est vérifié avant la diffusion, de sorte que ces erreurs (et 404 pour une application inconnue) sont levées à la première itération.
- Le timeout ne couvre que l’ouverture, jusqu’à l’arrivée des en-têtes de réponse. Le flux lui-même n’a pas de timeout : une connexion à moitié ouverte (un ordinateur portable qui sort de veille) attend jusqu’à ce que vous appeliez
close().

