Este endpoint se ha actualizado para incluir metadatos de edición de Post. Obtén más información sobre estos metadatos en la página de fundamentos “Editar Posts”.
Decahose stream
- URL ampliadas y mejoradas: - expande completamente las URL acortadas y proporciona metadatos adicionales (título y descripción de la página)
- Particionado del stream - 2 particiones, cada una con el 50% del volumen del stream Decahose
- Fiabilidad mejorada - diversidad geográfica de los sistemas de backend
ENTERPRISE
Transmisión de likes
- Los likes se entregan mediante un stream independiente
- Históricamente, a los likes se les ha llamado “Favorites”. La carga útil en formato nativo enriquecido mantiene esta nomenclatura
- Los streams incluyen únicamente likes públicos
- Público significa que el usuario que da el like, el creador del Post y el Post son públicos en la plataforma
- Los likes son muy similares a los Retweets y representan una señal pública de engagement
- Los elementos de la carga útil incluyen:
- Objeto de Post original
- Objeto Actor que creó el Post original
- Objeto Actor que realizó la acción de like
- Solo se puede dar like al contenido original
- No se pueden dar likes a los Retweets. Un like a un Retweet se aplica al Post original
- Los Tweets citados se pueden dar like
- Las actividades de like incluyen los Gnip Enrichments aplicables (cuando se hayan adquirido/aplicado)
- Productos / Funciones compatibles
- Los streams de likes admiten Backfill (cuando se haya adquirido/aplicado)
- No hay compatibilidad con Replay para streams de likes
- No hay compatibilidad con Search o Historical para likes
- No hay planes inmediatos de agregar compatibilidad de likes a PowerTrack
- Para el 10% de Posts de muestra entregados en Decahose, el stream incluye el 100% de los likes públicos aplicables
- Partitions: 2
- URL Structure
Guías
Recuperación y redundancia
- Para admitir múltiples entornos, podemos implementar Additional Streams para su cuenta. Estos streams son independientes entre sí y tienen una stream_label diferente para ayudar a diferenciarlos.
- Para ayudar a mantener una conexión, cada stream de Decahose admite Redundant Connections. La arquitectura más común es que un stream tenga dos conexiones y, en el lado del cliente, haya dos consumidores independientes, idealmente en redes diferentes. Con este diseño, puede haber redundancia en las redes del lado del cliente, los servidores y las rutas del datastore. Tenga en cuenta que se sirve una copia completa de los datos en cada conexión y el lado del cliente debe ser tolerante y gestionar datos duplicados.
- Se proporcionará un “heartbeat” cada 10 segundos; sin embargo, con el stream de Decahose, el volumen de datos es lo suficientemente alto como para que incluso una breve duración (p. ej., unos segundos) sin Posts pueda indicar un problema de conexión. Por lo tanto, tanto un “silencio de datos” como la falta de un heartbeat pueden usarse para detectar una desconexión.
Streams adicionales
Descripción general
Recovery es una herramienta de recuperación de datos (no debe utilizarse para la recolección principal de datos) que ofrece acceso por streaming a una ventana continua de 5 días de datos históricos recientes de X. Debe emplearse para recuperar datos en situaciones en las que tu aplicación consumidora pierda datos en el stream en tiempo real, ya sea por una desconexión breve o por cualquier otro motivo que impida la ingesta de datos en tiempo real durante un período.Uso de Recovery
Con el stream de Recovery, su App puede realizar solicitudes que funcionan del mismo modo que las solicitudes a los streams en tiempo real. Sin embargo, su App debe especificar parámetros en la URL que indiquen la ventana de tiempo solicitada. En otras palabras, una solicitud de Recovery le pide a la API “Posts desde la hora A hasta la hora B”. Estos Posts se entregan a través de su conexión de streaming de una manera que imita el stream en tiempo real, pero a una velocidad ligeramente inferior a la del tiempo real. Consulte el siguiente ejemplo: “https://stream-data-api.x.com/stream/powertrack/accounts/someAccountName/publishers/twitter/powertrack.json?startTime=2023-07-05T17:09:12.070Z” Los Posts se entregan comenzando por el primer (más antiguo) minuto del período de tiempo especificado y continúan de forma cronológica hasta que se entregue el último minuto. En ese punto, se envía un mensaje de “Recovery Request Completed” a través de la conexión y, a continuación, el servidor cierra la conexión. Si su solicitud comienza en un momento del día en el que hubo pocos o ningún resultado coincidente, probablemente transcurra un período de tiempo antes de que se entreguen los primeros resultados; los datos se entregarán cuando Recovery encuentre coincidencias en la parte del archivo que se esté procesando en ese momento. Cuando no haya resultados disponibles para entregar, el stream seguirá enviando retornos de carro, o “latidos” (heartbeats), a través de la conexión para evitar que su sesión agote el tiempo de espera. Recovery está pensado como una herramienta para recuperar con facilidad datos perdidos debido a desconexiones breves, no para períodos muy largos como un día completo. Si surge la necesidad de recuperar datos durante períodos prolongados, recomendamos dividir las solicitudes más largas en ventanas de tiempo más cortas (p. ej., dos horas) para reducir la posibilidad de que se produzca una desconexión a mitad de la solicitud debido a la volatilidad de internet u otros motivos, y para proporcionar mayor visibilidad del progreso de solicitudes largas.Disponibilidad de datos
Backfill
- Tienes la opción de usar siempre “backfillMinutes=5” al conectarte y luego manejar cualquier dato duplicado que se proporcione.
- Si estás desconectado por más de cinco minutos, puedes recuperar datos usando Recovery.
- Determinar la duración del período de desconexión.
- ¿5 minutos o menos?
- Si tienes Backfill habilitado para el stream, prepara la solicitud de conexión con el parámetro “backfillMinutes” apropiado.
- ¿Más de 5 minutos?
- Si tienes un stream de Recovery, realiza una solicitud de Recovery para el período desconectado (idealmente con tu conjunto de reglas de tiempo real actual, usando la Rules API si es necesario).
- ¿5 minutos o menos?
- Solicitar una nueva conexión.
- Implementar backfill Backfill te permite reconectarte desde un punto anterior a la desconexión de un stream y cubre interrupciones de hasta 5 minutos. Se implementa incluyendo un parámetro en la solicitud de conexión.
- Consumir un stream redundante desde otra ubicación Si el stream redundante puede transmitirse al mismo entorno en vivo, con desduplicación de datos, eliminarás la necesidad de recuperación a menos que TANTO el stream normal como el redundante sufran simultáneamente tiempo de inactividad o desconexiones. Si el stream redundante no puede transmitirse en vivo al entorno de producción, puede volcarse en un almacén de datos “de emergencia” separado. Entonces, en caso de desconexiones o tiempo de inactividad en la conexión del stream principal, tu sistema tendrá datos a mano para completar tu base de datos principal durante el período en que falten datos.
- Implementar Recovery Cuando las desconexiones o el tiempo de inactividad afecten tanto al stream principal como al stream redundante, usa Decahose Recovery para recuperar cualquier dato perdido. La API proporciona una ventana móvil que cubre 5 días del archivo y se aprovecha mejor solicitando no más de una hora de esa ventana por solicitud y transmitiéndola. Esto se hace en paralelo al stream en tiempo real. Ten en cuenta que no tenemos soluciones para recuperar datos de Decahose más allá de la ventana de 5 días que ofrece Recovery, por lo que es importante utilizar un stream redundante para asegurarte de tener una copia completa de los datos de tu lado en caso de un tiempo de inactividad significativo.
- Contar los Posts entrantes Tu sistema debe contar el número bruto de Posts que recibes al inicio de tu App de ingesta y luego proporcionar una forma de comparar esos números con el número de Posts que llegan a tu almacén de datos final. Cualquier diferencia puede monitorearse y alertar a tu equipo sobre problemas que provoquen la pérdida de datos después de ser recibidos.
- Analizar volúmenes almacenados anómalos También puedes analizar los volúmenes de datos almacenados en tu base de datos final para buscar caídas anómalas. Esto también puede indicar problemas, aunque probablemente habrá circunstancias en las que las caídas de volumen sean normales (p. ej., si la plataforma X no está disponible y las personas no pueden crear Posts durante algún período).
Referencia de API
Stream Decahose
Métodos
Método | Descripción |
---|---|
GET /{stream-type}/:stream | Conectar al stream de datos |
GET :stream
Establece una conexión persistente con el stream Firehose, por la cual se entregarán los datos en tiempo real.Especificaciones de la solicitud
Método de la solicitud | HTTP GET |
Tipo de conexión | Keep-Alive Esto debe especificarse en el encabezado de la solicitud. |
URL | Disponible en la página de ayuda de la API del stream en su panel de control, con la siguiente estructura: Decahose: https://gnip-stream.x.com/stream/sample10/accounts/:account_name/publishers/twitter/:stream_label.json?partition=1 |
Partición (obligatorio) | partition=\{#} - Ahora se requiere la partición para consumir el stream completo. Deberá conectarse al stream con el parámetro de partición especificado. A continuación se muestra el número de particiones por stream:* Decahose: 2 particiones |
Compresión | Gzip. Para conectarse al stream usando compresión Gzip, envíe un encabezado Accept-Encoding en la solicitud de conexión. El encabezado debe tener el siguiente formato: Accept-Encoding: gzip |
Codificación de caracteres | UTF-8 |
Formato de respuesta | JSON. El encabezado de su solicitud debe especificar el formato JSON para la respuesta. |
Límite de tasa | 10 solicitudes por 60 segundos. |
Parámetro Backfill | Si ha adquirido un stream con Backfill habilitado, deberá agregar el parámetro “backfillMinutes” en la solicitud GET para habilitarlo. |
Tiempo de espera de lectura | Configure un tiempo de espera de lectura en su cliente y asegúrese de que esté establecido en un valor superior a 30 segundos. |
Compatibilidad con ediciones de Tweet | Todos los objetos de Tweet incluirán metadatos de edición de Tweet que describen el historial de ediciones del Tweet. Consulte la página de fundamentos “Edit Tweets” para más detalles. |
Respuestas
Estado | Texto | Descripción |
---|---|---|
200 | Correcto | La conexión se abrió correctamente y se enviarán nuevas actividades a medida que lleguen. |
401 | No autorizado | La autenticación HTTP falló debido a credenciales no válidas. Inicia sesión en console.gnip.com con tus credenciales para confirmar que las estás usando correctamente en tu solicitud. |
406 | No aceptable | Generalmente, esto ocurre cuando tu cliente no incluye correctamente los encabezados para aceptar la codificación gzip del stream, aunque también puede ocurrir en otras circunstancias. Contendrá un mensaje JSON similar a: “Esta conexión requiere compresión. Para habilitar la compresión, envía un encabezado ‘Accept-Encoding: gzip’ en tu solicitud y prepárate para descomprimir el stream a medida que se lea en el lado del cliente.” |
429 | Límite de tasa excedido | Tu App ha superado el límite de solicitudes de conexión. |
503 | Servicio no disponible | Problema en el servidor de Twitter. Vuelve a conectarte usando un patrón de backoff exponencial. Si no se ha publicado ningún aviso sobre este problema en la X API Status Page, contacta al soporte o a emergencias si no puedes conectarte después de 10 minutos. |