Dieses endpoint wurde aktualisiert, um Bearbeitungs-metadata für Posts einzuschließen. Erfahren Sie mehr über diese metadata auf der Seite zu den Grundlagen von “Posts bearbeiten”.
Decahose-Stream
- Erweiterte und aufgewertete URLs: - löst verkürzte URLs vollständig auf und stellt zusätzliche metadata bereit (Seitentitel und -beschreibung)
- Stream-Partitionierung - 2 Partitionen, die jeweils 50% des Volumens des Decahose-Streams enthalten
- Erhöhte Zuverlässigkeit - geografische Diversifizierung der Backendsysteme
ENTERPRISE
Streaming-Likes
- Likes werden über einen unabhängigen, separaten Stream geliefert
- Likes wurden früher als „Favorites“ bezeichnet. Die angereicherte native Payload behält diese Nomenklatur bei
- Streams enthalten nur öffentliche Likes
- Öffentlich bedeutet, dass der likende Nutzer, der Post-Ersteller und der Post auf der Plattform jeweils öffentlich sind
- Likes sind Retweets sehr ähnlich und stellen ein öffentliches Signal für Engagement dar
- Payload-Elemente umfassen:
- Ursprüngliches Post-Objekt
- Actor-Objekt, das den ursprünglichen Post erstellt hat
- Actor-Objekt, das die Like-Aktion ausgeführt hat
- Nur Originalinhalte können geliked werden
- Retweets können nicht geliked werden. Ein Like auf einen Retweet wird auf den ursprünglichen Post angewendet
- Zitierte Tweets können geliked werden
- Like-Aktivitäten enthalten anwendbare Gnip Enrichments (falls erworben/angewendet)
- Unterstützte Produkte/Funktionen
- Likes-Streams unterstützen Backfill (falls erworben/angewendet)
- Es gibt keinen Replay-Support für Likes-Streams
- Es gibt keinen Search- oder Historical-Support für Likes
- Es gibt derzeit keine unmittelbaren Pläne, Likes-Support zu PowerTrack hinzuzufügen
- Für die 10%-Stichprobe der in der Decahose gelieferten Posts enthält der Stream 100% der anwendbaren öffentlichen Likes
- Partitionen: 2
- URL-Struktur
Anleitungen
Wiederherstellung und Redundanz
- Zur Unterstützung mehrerer Umgebungen können wir zusätzliche Streams für Ihr Konto bereitstellen. Diese Streams sind voneinander unabhängig und haben ein eigenes stream_label, um sie zu unterscheiden.
- Zur Stabilisierung der Verbindung unterstützt jeder Decahose-Stream redundante Verbindungen. Die gängigste Architektur ist, dass ein Stream zwei Verbindungen hat, und auf der Client-Seite zwei unabhängige Consumer laufen – idealerweise in unterschiedlichen Netzwerken. Mit diesem Design entsteht Redundanz über die clientseitigen Netzwerke, Server und Datenspeicherpfade hinweg. Beachten Sie, dass auf jeder Verbindung eine vollständige Kopie der Daten geliefert wird und die Client-Seite Duplikate tolerieren und handhaben muss.
- Alle 10 Sekunden wird ein „Heartbeat“ gesendet; beim Decahose-Stream ist das Datenvolumen jedoch so hoch, dass bereits eine kurze Phase (z. B. einige Sekunden) ohne Posts auf ein Verbindungsproblem hinweisen kann. Daher können sowohl eine „Datensilence“ als auch das Ausbleiben eines Heartbeats zur Erkennung eines Verbindungsabbruchs verwendet werden.
Zusätzliche Streams
Übersicht
Recovery ist ein Tool zur Datenwiederherstellung (nicht für die primäre Datenerfassung zu verwenden), das Streaming-Zugriff auf ein rollierendes 5‑Tage‑Fenster aktueller historischer X‑Daten bietet. Es sollte genutzt werden, um Daten in Situationen wiederherzustellen, in denen Ihre konsumierende Anwendung Daten im Echtzeit‑Stream verpasst — sei es aufgrund einer kurzfristigen Trennung oder in anderen Fällen, in denen es Ihnen für einen Zeitraum nicht gelingt, Echtzeitdaten zu erfassen.Verwendung von Recovery
Mit dem Recovery-Stream kann Ihre App Anfragen stellen, die auf die gleiche Weise funktionieren wie Anfragen an die Echtzeit-Streams. Ihre App muss jedoch Parameter in der URL angeben, die das von Ihnen angeforderte Zeitfenster kennzeichnen. Anders ausgedrückt: Eine Recovery-Anfrage fordert die API auf: „Posts von Zeitpunkt A bis Zeitpunkt B.“ Diese Posts werden dann über Ihre Streaming-Verbindung in einer Weise zugestellt, die den Echtzeit-Stream nachahmt, jedoch mit leicht verzögerter Geschwindigkeit gegenüber Echtzeit. Siehe folgendes Beispiel: “https://stream-data-api.x.com/stream/powertrack/accounts/someAccountName/publishers/twitter/powertrack.json?startTime=2023-07-05T17:09:12.070Z” Posts werden beginnend mit der ersten (ältesten) Minute des angegebenen Zeitraums zugestellt und chronologisch fortgesetzt, bis die letzte Minute geliefert wurde. Zu diesem Zeitpunkt wird eine Nachricht „Recovery Request Completed“ über die Verbindung gesendet und die Verbindung anschließend vom Server geschlossen. Wenn Ihre Anfrage zu einem Zeitpunkt beginnt, an dem wenige oder keine passenden Ergebnisse auftraten, kann es etwas dauern, bis die ersten Ergebnisse geliefert werden – data wird geliefert, sobald Recovery in dem zu diesem Zeitpunkt verarbeiteten Teil des Archivs Übereinstimmungen findet. Wenn keine Ergebnisse zur Lieferung verfügbar sind, sendet der Stream weiterhin Wagenrückläufe bzw. „Heartbeats“ über die Verbindung, um zu verhindern, dass ein Timeout auftritt. Recovery ist als Tool gedacht, um Daten, die durch kurze Verbindungsabbrüche verpasst wurden, einfach wiederherzustellen – nicht für sehr lange Zeiträume wie einen ganzen Tag. Falls eine Wiederherstellung von Daten über längere Zeiträume erforderlich ist, empfehlen wir, längere Anfragen in kürzere Zeitfenster (z. B. zwei Stunden) aufzuteilen, um die Wahrscheinlichkeit einer Unterbrechung während der Anfrage aufgrund von Instabilitäten im Internet oder aus anderen Gründen zu verringern und um mehr Transparenz über den Fortschritt langer Anfragen zu bieten.Datenverfügbarkeit
Backfill
- Sie haben die Möglichkeit, bei der Verbindung stets „backfillMinutes=5“ zu verwenden und anschließend alle bereitgestellten doppelten Daten zu behandeln.
- Wenn Sie länger als fünf Minuten getrennt sind, können Sie Daten mithilfe von Recovery wiederherstellen.
- Bestimmung der Dauer des Trennungszeitraums.
- 5 Minuten oder weniger?
- Wenn Sie Backfill für den Stream aktiviert haben, bereiten Sie die Verbindungsanfrage mit dem entsprechenden Parameter „backfillMinutes“ vor.
- Mehr als 5 Minuten?
- Wenn Sie einen Recovery-Stream haben, stellen Sie eine Recovery-Anfrage für den getrennten Zeitraum (idealerweise mit Ihrem aktuellen Realtime-Regelsatz, bei Bedarf mit der Rules API).
- 5 Minuten oder weniger?
- Fordern Sie eine neue Verbindung an.
- Backfill implementieren Backfill ermöglicht es Ihnen, ab einem Zeitpunkt vor der Trennung von einer Stream-Verbindung erneut zu verbinden, und deckt Trennungen von bis zu 5 Minuten ab. Dies wird umgesetzt, indem ein Parameter in die Verbindungsanfrage aufgenommen wird.
- Einen redundanten Stream von einem anderen Standort konsumieren Wenn der redundante Stream in dieselbe Live-Umgebung eingespeist werden kann und dabei Daten dedupliziert werden, entfällt die Notwendigkeit einer Wiederherstellung, es sei denn, SOWOHL der normale Stream als auch der redundante Stream haben gleichzeitig Ausfallzeiten oder Trennungen. Wenn der redundante Stream nicht live in die Produktionsumgebung eingespeist werden kann, kann er in einen separaten „Notfall“-Datenspeicher geschrieben werden. Dann hat Ihr System im Falle von Trennungen oder Ausfallzeiten bei der primären Stream-Verbindung Daten zur Hand, um Ihre primäre Datenbank für den Zeitraum zu ergänzen, in dem Daten fehlen.
- Recovery implementieren Wenn Trennungen oder Ausfallzeiten sowohl den primären Stream als auch den redundanten Stream betreffen, verwenden Sie Decahose Recovery, um verpasste Daten wiederherzustellen. Die API bietet ein rollierendes Fenster, das 5 Tage des Archivs abdeckt, und wird am besten genutzt, indem Sie jeweils nicht mehr als eine Stunde dieses Fensters anfordern und einspielen. Dies geschieht parallel zum Realtime-Stream. Beachten Sie, dass wir keine Lösungen zur Wiederherstellung von Decahose-Daten über das durch Recovery bereitgestellte 5‑Tage‑Fenster hinaus anbieten. Es ist daher wichtig, einen redundanten Stream zu nutzen, um sicherzustellen, dass Sie bei erheblichen Ausfallzeiten auf Ihrer Seite eine vollständige Kopie der Daten auf Ihrer Seite haben.
- Eingehende Posts zählen Ihr System sollte die Rohanzahl der Posts zählen, die Sie ganz am Anfang Ihrer Ingestion-App erhalten, und dann eine Möglichkeit bieten, diese Zahlen mit der Anzahl der Posts zu vergleichen, die Ihren endgültigen Datenspeicher erreichen. Alle Abweichungen können überwacht werden und Ihr Team auf Probleme aufmerksam machen, die dazu führen, dass Daten nach dem Empfang verworfen werden.
- Analyse auf anormale gespeicherte Volumina Sie sollten auch die Volumina der gespeicherten Daten in Ihrer endgültigen Datenbank analysieren, um nach ungewöhnlichen Rückgängen zu suchen. Dies kann ebenfalls auf Probleme hinweisen, wobei es wahrscheinlich Situationen gibt, in denen Rückgänge im Volumen normal sind (z. B. wenn die X Plattform nicht verfügbar ist und Personen für einen bestimmten Zeitraum keine Posts erstellen können).
API-Referenz
Decahose-Stream
Methoden
Methode | Beschreibung |
---|---|
GET /{stream-type}/:stream | Mit dem Datenstream verbinden |
GET :stream
Stellt eine dauerhafte Verbindung zum Firehose-Stream her, über die die Echtzeitdaten ausgeliefert werden.Anforderungsspezifikationen
Anforderungsmethode | HTTP GET |
Verbindungstyp | Keep-Alive Dies sollte im Header der Anfrage angegeben werden. |
URL | Auf der API-Hilfeseite des Streams in Ihrem Dashboard zu finden, mit folgender Struktur: Decahose: https://gnip-stream.x.com/stream/sample10/accounts/:account_name/publishers/twitter/:stream_label.json?partition=1 |
Partition (erforderlich) | partition=\{#} - Partitionierung ist jetzt erforderlich, um den vollständigen Stream zu beziehen. Sie müssen mit dem angegebenen Parameter „partition“ eine Verbindung zum Stream herstellen. Unten finden Sie die Anzahl der Partitionen pro Stream:* Decahose: 2 Partitionen |
Kompression | Gzip. Um den Stream mit Gzip-Komprimierung zu nutzen, senden Sie in der Verbindungsanfrage einen Accept-Encoding-Header. Der Header sollte wie folgt aussehen: Accept-Encoding: gzip |
Zeichenkodierung | UTF-8 |
Antwortformat | JSON. Der Header Ihrer Anfrage sollte JSON als Antwortformat angeben. |
Rate Limit | 10 Anfragen pro 60 Sekunden. |
Backfill-Parameter | Wenn Sie einen Stream mit aktiviertem Backfill erworben haben, müssen Sie den Parameter „backfillMinutes“ in die GET-Anfrage aufnehmen, um ihn zu aktivieren. |
Read Timeout | Setzen Sie auf Ihrem Client ein Read-Timeout und stellen Sie sicher, dass es auf einen Wert von mehr als 30 Sekunden konfiguriert ist. |
Unterstützung für Tweet-Bearbeitungen | Alle Tweet-Objekte enthalten Tweet-Edit-Metadata, die die Bearbeitungshistorie des Tweets beschreiben. Weitere Details finden Sie auf der Grundlagen-Seite „Edit Tweets“ (/x-api/enterprise-gnip-2.0/fundamentals/edit-tweets) und in der englischen Version der Seite: Edit Tweets. |
Antworten
Status | Text | Beschreibung |
---|---|---|
200 | Erfolg | Die Verbindung wurde erfolgreich geöffnet und neue Aktivitäten werden gesendet, sobald sie eintreffen. |
401 | Nicht autorisiert | HTTP-Authentifizierung aufgrund ungültiger Anmeldedaten fehlgeschlagen. Melden Sie sich mit Ihren Anmeldedaten bei console.gnip.com an, um sicherzustellen, dass Sie sie in Ihrer Anfrage korrekt verwenden. |
406 | Nicht akzeptabel | Dies tritt in der Regel auf, wenn Ihr Client die Header zum Akzeptieren der gzip-Codierung aus dem Stream nicht korrekt angibt, kann jedoch auch unter anderen Umständen auftreten. Enthält eine JSON-Nachricht ähnlich wie „Diese Verbindung erfordert Komprimierung. Um die Komprimierung zu aktivieren, senden Sie einen ‚Accept-Encoding: gzip‘-Header in Ihrer Anfrage und seien Sie bereit, den Stream auf der Client-Seite beim Lesen zu dekomprimieren.“ |
429 | Rate Limit überschritten | Ihre App hat das Limit für Verbindungsanfragen überschritten. |
503 | Dienst nicht verfügbar | Serverproblem bei Twitter. Stellen Sie die Verbindung mithilfe eines exponentiellen Backoff-Musters wieder her. Wenn auf der X API Status Page keine Mitteilung zu diesem Problem veröffentlicht wurde, wenden Sie sich an den Support oder an den Notdienst, wenn nach 10 Minuten keine Verbindung möglich ist. |