Cet endpoint a été mis à jour pour inclure les métadonnées d’édition de Post. Pour en savoir plus sur ces métadonnées, consultez la page des fondamentaux “Modifier des Posts”.
Decahose stream
- URL étendues et enrichies : - déroule entièrement les URL raccourcies et fournit des metadata supplémentaires (titre et description de page)
- Partitionnement du stream - 2 partitions, chacune contenant 50 % du volume du stream Decahose
- Fiabilité améliorée - diversité géographique des systèmes backend
ENTERPRISE
Diffusion en continu des likes
- Les likes sont fournis via un stream indépendant et distinct
- Historiquement, les likes étaient appelés « Favorites ». La charge utile au format natif enrichi conserve cette nomenclature
- Les streams incluent uniquement les likes publics
- Public signifie que l’utilisateur qui like, le créateur du Post et le Post sont tous publics sur la plateforme
- Les likes sont très similaires aux Retweets et représentent un signal public d’engagement
- Les éléments de la charge utile incluent :
- Objet Post original
- Objet Actor ayant créé le Post original
- Objet Actor ayant effectué l’action de like
- Seul le contenu original peut être liké
- Les Retweets ne peuvent pas être likés. Un like sur un Retweet est appliqué au Post original
- Les Tweets cités peuvent être likés
- Les activités de like incluent les Gnip Enrichments applicables (lorsqu’ils sont achetés/appliqués)
- Produits / fonctionnalités pris en charge
- Les streams de likes prennent en charge le Backfill (lorsqu’il est acheté/appliqué)
- Il n’y a pas de prise en charge du Replay pour les streams de likes
- Il n’y a pas de prise en charge de Search ou Historical pour les likes
- Il n’y a pas de projets immédiats visant à ajouter la prise en charge des likes à PowerTrack
- Pour l’échantillon de 10 % de Posts livré dans Decahose, le stream inclut 100 % des likes publics applicables
- Partitions : 2
- Structure d’URL
Guides
Récupération et redondance
- Pour prendre en charge plusieurs environnements, nous pouvons déployer des Additional Streams pour votre compte. Ces streams sont indépendants les uns des autres et disposent d’un stream_label distinct pour les différencier.
- Pour contribuer au maintien de la connexion, chaque stream Decahose prend en charge les Redundant Connections. L’architecture la plus courante consiste à doter un stream de deux connexions, et côté client d’avoir deux consommateurs indépendants — idéalement sur des réseaux différents. Avec cette conception, il existe une redondance au niveau des réseaux côté client, des serveurs et des chemins vers le datastore. Notez qu’une copie complète des données est fournie sur chaque connexion et que le côté client doit tolérer et gérer les doublons.
- Un « heartbeat » est émis toutes les 10 secondes ; toutefois, avec le stream Decahose, le volume de données est suffisamment élevé pour que même une courte période (p. ex., quelques secondes) sans Posts puisse indiquer un problème de connexion. Par conséquent, à la fois un « silence de données » et l’absence de heartbeat peuvent servir à détecter une déconnexion.
Flux supplémentaires
Présentation
Recovery est un outil de récupération de données (à ne pas utiliser pour la collecte principale) qui offre un accès en continu à une fenêtre glissante de 5 jours des données historiques récentes de X. Il doit être utilisé pour récupérer des données lorsque votre application consommatrice manque des données dans le stream en temps réel, que ce soit en raison d’une brève déconnexion ou de toute autre situation où vous n’avez pas ingéré de données en temps réel pendant un certain temps.Utilisation de Recovery
Avec le stream Recovery, votre App peut envoyer des requêtes qui fonctionnent de la même manière que celles adressées aux streams en temps réel. Cependant, votre App doit spécifier dans l’URL des paramètres indiquant la fenêtre temporelle demandée. En d’autres termes, une requête Recovery demande à l’API « Posts de l’heure A à l’heure B ». Ces Posts sont ensuite livrés via votre connexion de streaming d’une manière qui imite le stream en temps réel, mais à un rythme légèrement inférieur au temps réel. Voir ci-dessous un exemple : “https://stream-data-api.x.com/stream/powertrack/accounts/someAccountName/publishers/twitter/powertrack.json?startTime=2023-07-05T17:09:12.070Z” Les Posts sont livrés en commençant par la première (la plus ancienne) minute de la période spécifiée, puis en continuant chronologiquement jusqu’à la dernière minute. À ce moment-là, un message « Recovery Request Completed » est envoyé via la connexion, et la connexion est ensuite fermée par le serveur. Si votre requête commence à une heure de la journée où peu ou pas de résultats correspondants se sont produits, il y aura probablement un certain laps de temps avant la livraison des premiers résultats — les data seront livrées lorsque Recovery rencontrera des correspondances dans la portion de l’archive en cours de traitement à ce moment-là. Lorsque aucun résultat n’est disponible à livrer, le stream continuera d’envoyer des retours chariot, ou « battements de cœur », via la connexion pour éviter l’expiration de votre session. Recovery est conçu comme un outil pour récupérer facilement les data manquées en raison de courtes déconnexions, et non pour de très longues périodes comme une journée entière. Si vous devez récupérer des data sur de longues périodes, nous recommandons de diviser les requêtes plus longues en fenêtres temporelles plus courtes (par exemple deux heures) afin de réduire le risque d’être déconnecté en cours de requête en raison de la volatilité d’Internet ou pour d’autres raisons, et d’offrir une meilleure visibilité sur l’avancement des requêtes longues.Disponibilité des données
Rattrapage (Backfill)
- Vous pouvez choisir d’utiliser systématiquement « backfillMinutes=5 » lors de la connexion, puis de gérer les données en double fournies.
- Si vous êtes déconnecté plus de cinq minutes, vous pouvez récupérer les données à l’aide de Recovery.
- Déterminer la durée de la période de déconnexion.
- 5 minutes ou moins ?
- Si Backfill est activé pour le stream, préparez la requête de connexion avec le paramètre « backfillMinutes » approprié.
- Plus de 5 minutes ?
- Si vous disposez d’un stream de Recovery, effectuez une requête de Recovery pour la période de déconnexion (idéalement avec votre jeu de règles temps réel actuel, en utilisant l’API Rules si nécessaire).
- 5 minutes ou moins ?
- Demander une nouvelle connexion.
- Mettre en œuvre le rattrapage (Backfill) Le rattrapage vous permet de vous reconnecter à partir d’un point antérieur à la déconnexion d’un stream et couvre des déconnexions jusqu’à 5 minutes. Il s’active en incluant un paramètre dans la requête de connexion.
- Consommer un stream redondant depuis un autre emplacement Si le stream redondant peut être acheminé vers le même environnement de production en direct, avec déduplication des données, vous éviterez le besoin de récupération sauf si le stream normal ET le stream redondant subissent simultanément une interruption ou une déconnexion. Si le stream redondant ne peut pas être diffusé en direct dans l’environnement de production, il peut être écrit dans un magasin de données « d’urgence » séparé. Ainsi, en cas de déconnexions ou d’interruptions sur la connexion de stream principale, votre système disposera de données pour compléter votre base de données principale pendant la période où des données manquent.
- Mettre en œuvre Recovery Lorsque des déconnexions ou des interruptions affectent à la fois le stream principal et le stream redondant, utilisez Decahose Recovery pour récupérer toute donnée manquée. L’API fournit une fenêtre glissante couvrant 5 jours d’archives, à utiliser de préférence en demandant au plus une heure de cette fenêtre à la fois, puis en la diffusant. Cette opération se fait en parallèle du stream temps réel. Notez que nous n’avons pas de solution pour récupérer des données Decahose au-delà de la fenêtre de 5 jours fournie par Recovery ; il est donc important d’utiliser un stream redondant pour vous assurer de disposer d’une copie complète des données de votre côté en cas d’interruption significative.
- Compter les Posts entrants Votre système doit compter le nombre brut de Posts reçus dès le tout début de votre App d’ingestion, puis offrir un moyen de comparer ces nombres au nombre de Posts qui atteignent votre magasin de données final. Toute différence peut être surveillée et alerter votre équipe de problèmes entraînant la perte de données après leur réception.
- Analyser les volumes stockés anormaux Vous pouvez également analyser les volumes de données stockées dans votre base de données finale pour détecter des baisses anormales. Cela peut aussi indiquer des problèmes, bien qu’il existe probablement des circonstances où des baisses de volume sont normales (par exemple, si la plateforme X est indisponible et que les personnes ne peuvent pas créer de Posts pendant un certain temps).
Référence de l’API
Flux Decahose
Méthodes
Méthode | Description |
---|---|
GET /{stream-type}/:stream | Se connecter au stream de données |
GET :stream
Établit une connexion persistante au stream Firehose, via laquelle les données en temps réel seront livrées.Spécifications de la requête
Méthode de requête | HTTP GET |
Type de connexion | Keep-Alive À préciser dans l’en-tête de la requête. |
URL | Disponible sur la page d’aide de l’API du stream dans votre tableau de bord, selon la structure suivante : Decahose : https://gnip-stream.x.com/stream/sample10/accounts/:account_name/publishers/twitter/:stream_label.json?partition=1 |
Partition (obligatoire) | partition=\{#} - Le partitionnement est désormais requis pour consommer l’intégralité du stream. Vous devez vous connecter au stream avec le paramètre de partition renseigné. Nombre de partitions par stream :* Decahose : 2 partitions |
Compression | Gzip. Pour vous connecter au stream avec la compression Gzip, envoyez simplement un en-tête Accept-Encoding dans la requête de connexion. L’en-tête doit être le suivant : Accept-Encoding: gzip |
Encodage des caractères | UTF-8 |
Format de réponse | JSON. L’en-tête de votre requête doit spécifier le format JSON pour la réponse. |
Limite de taux | 10 requêtes par 60 secondes. |
Paramètre Backfill | Si vous avez acheté un stream avec Backfill activé, vous devez ajouter le paramètre “backfillMinutes” à la requête GET pour l’activer. |
Délai d’expiration de lecture | Configurez un délai d’expiration de lecture sur votre client et assurez-vous qu’il est supérieur à 30 secondes. |
Prise en charge des modifications de Tweet | Tous les objets Tweet incluront des metadata d’édition de Tweet décrivant l’historique des modifications du Tweet. Consultez la page de référence “Edit Tweets” pour plus de détails. |
Réponses
Statut | Texte | Description |
---|---|---|
200 | Succès | La connexion a été ouverte avec succès et de nouvelles activités seront envoyées au fur et à mesure de leur arrivée. |
401 | Non autorisé | L’authentification HTTP a échoué en raison d’identifiants invalides. Connectez-vous à console.gnip.com avec vos identifiants pour vérifier que vous les utilisez correctement dans votre requête. |
406 | Non acceptable | En général, cela se produit lorsque votre client n’inclut pas correctement les en-têtes pour accepter l’encodage gzip depuis le stream, mais cela peut aussi survenir dans d’autres circonstances. Contiendra un message JSON similaire à « Cette connexion requiert la compression. Pour l’activer, envoyez un en-tête ‘Accept-Encoding: gzip’ dans votre requête et préparez-vous à décompresser le stream lors de sa lecture côté client. » |
429 | Limite de taux atteinte | Votre App a dépassé la limite des requêtes de connexion. |
503 | Service indisponible | Problème de serveur X. Reconnectez-vous en appliquant une temporisation exponentielle (exponential backoff). Si aucun avis concernant ce problème n’a été publié sur la X API Status Page, contactez le support (ou l’assistance d’urgence) si vous ne parvenez pas à vous connecter après 10 minutes. |