Qu’est-ce qu’une déconnexion ?
Pourquoi une connexion de streaming peut être interrompue
- Une erreur d’authentification (par exemple, un jeton incorrect ou une méthode d’authentification inadaptée).
- Un serveur de streaming est redémarré du côté de X. Cela est généralement lié à un déploiement de code et doit généralement être anticipé et pris en compte dans la conception de votre intégration.
- Votre client ne parvient pas à suivre le volume de Publications que le flux fournit ou lit les données trop lentement. Chaque connexion de streaming est soutenue par une file d’attente de messages à envoyer au client. Si cette file d’attente devient trop importante au fil du temps, la connexion sera fermée.
- Votre compte a dépassé votre quota quotidien/mensuel de Publications.
- Vous avez trop de connexions redondantes actives.
- Un client cesse soudainement de lire les données. Si le taux de Publications lues depuis le flux chute soudainement, la connexion sera fermée.
- D’éventuels problèmes réseau entre le serveur et le client.
- Un problème temporaire côté serveur, une maintenance planifiée ou des mises à jour. (Consultez la page de statut)
Les erreurs de déconnexion les plus courantes sont les suivantes :
Anticiper les déconnexions et se reconnecter
- Votre code doit détecter lorsque le nouveau contenu et le battement de cœur cessent d’arriver.
- Si cela se produit, votre code doit déclencher une logique de reconnexion. Certains clients et langages de programmation vous permettent de spécifier un délai d’attente de lecture (read timeout), que vous pouvez régler à 20 secondes.
- Votre service doit détecter ces déconnexions et se reconnecter dès que possible.
- Appliquez un backoff linéaire pour les erreurs réseau au niveau TCP/IP. Ces problèmes sont généralement temporaires et ont tendance à se résoudre rapidement. Augmentez le délai entre les reconnexions de 250 ms à chaque tentative, jusqu’à 16 secondes.
- Appliquez un backoff exponentiel pour les erreurs HTTP pour lesquelles une reconnexion est appropriée. Commencez par une attente de 5 secondes, en la doublant à chaque tentative, jusqu’à 320 secondes.
- Appliquez un backoff exponentiel pour les erreurs HTTP 429 « Rate limit exceeded ». Commencez par une attente de 1 minute et doublez-la à chaque tentative. Notez que chaque HTTP 429 reçu augmente la durée d’attente avant que la limitation de débit ne soit plus appliquée à votre compte.
Récupération des données perdues
Limites de taux et utilisation
- x-rate-limit-limit indique le nombre de requêtes allouées que votre client est autorisé à effectuer pendant la fenêtre de 15 minutes.
- x-rate-limit-remaining indique le nombre de requêtes effectuées jusqu’à présent dans la fenêtre de 15 minutes.
- x-rate-limit-reset est un horodatage UNIX indiquant le moment où la fenêtre de 15 minutes redémarrera, réinitialisant x-rate-limit-remaining à 0.
Bonnes pratiques de reconnexion
user-agent inclut la version du client. Cela sera essentiel pour diagnostiquer les problèmes du côté de X. Si votre environnement empêche la définition du champ user-agent, définissez alors un en-tête x-user-agent.