Este endpoint se actualizó para incluir metadatos de edición de Posts. Obtén más información sobre estos metadatos en la página de fundamentos “Editar Posts”.
Flujo Decahose
- URL ampliadas y mejoradas: - expande por completo las URL acortadas y proporciona metadatos adicionales (título y descripción de la página)
- Particionado del flujo - 2 particiones, cada una con el 50% del volumen del flujo de Decahose
- Mayor confiabilidad - diversidad geográfica de los sistemas de backend
ENTERPRISE
Transmisión de Me gusta
- Los Me gusta se entregan mediante un flujo independiente y separado
- Históricamente, los Me gusta se denominaron “Favoritos”. La carga útil en formato nativo enriquecido mantiene esta nomenclatura
- Los flujos incluyen únicamente Me gusta públicos
- Público significa que el usuario que da Me gusta, el creador del Post y el Post son públicos en la plataforma
- Los Me gusta son muy similares a los Retweets y representan una señal pública de participación
- Los elementos de la carga útil incluyen:
- Objeto Post original
- Objeto actor que creó el Post original
- Objeto actor que realizó la acción de dar Me gusta
- Solo se puede dar Me gusta al contenido original
- No se puede dar Me gusta a los Retweets. Un Me gusta a un Retweet se aplica al Post original
- Los Tweets citados pueden recibir Me gusta
- Las actividades de Me gusta incluyen las Gnip Enrichments aplicables (cuando se hayan adquirido/aplicado)
- Productos/funciones compatibles
- Los flujos de Me gusta admiten Backfill (cuando se haya adquirido/aplicado)
- No hay compatibilidad con Replay para los flujos de Me gusta
- No hay compatibilidad con Search ni Historical para los Me gusta
- No hay planes inmediatos de agregar compatibilidad de Me gusta a PowerTrack
- Para el 10% de Posts de muestra entregados en Decahose, el flujo incluye el 100% de los Me gusta públicos aplicables
- Particiones: 2
- Estructura de URL
Guías
Recuperación y Redundancia
- Para admitir múltiples entornos, podemos implementar Additional Streams para tu cuenta. Estos flujos son independientes entre sí y tienen un stream_label diferente para ayudar a diferenciarlos.
- Para ayudar a mantener una conexión, cada flujo de Decahose admite Redundant Connections. La arquitectura más común es que un flujo tenga dos conexiones y, del lado del cliente, haya dos consumidores independientes, idealmente en redes diferentes. Con este diseño, puede haber redundancia en las redes, servidores y rutas de la base de datos del lado del cliente. Ten en cuenta que en cada conexión se sirve una copia completa de los datos y que el lado del cliente debe ser tolerante y gestionar datos duplicados.
- Se enviará un “heartbeat” cada 10 segundos; sin embargo, con el flujo 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 utilizarse para detectar una desconexión.
Streams adicionales
Descripción general
Recovery es una herramienta de recuperación de datos (no debe usarse para la recopilación principal de datos) que proporciona acceso por streaming a una ventana continua de 5 días de datos históricos recientes de X. Debe utilizarse para recuperar datos en escenarios en los que tu App consumidora pierde datos del flujo en tiempo real, ya sea por una desconexión breve o cualquier otra situación en la que no consigas ingerir datos en tiempo real durante un período.Uso de Recovery
Con el stream de Recovery, tu App puede realizar solicitudes que funcionan de la misma manera que las solicitudes a los streams en tiempo real. Sin embargo, tu App debe especificar parámetros en la URL que indiquen la ventana de tiempo que estás solicitando. 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 tu conexión de streaming de una forma que imita el stream en tiempo real, pero a una velocidad ligeramente inferior al tiempo real. Consulta 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 periodo de tiempo especificado, y continúan de forma cronológica hasta que se entrega el último minuto. En ese momento, se envía un mensaje de Recovery Request Completed a través de la conexión y el servidor cierra la conexión. Si tu solicitud comienza en un momento del día en el que hubo pocos o ningún resultado coincidente, probablemente transcurra un periodo 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 que entregar, el stream seguirá enviando retornos de carro, o “latidos”, a través de la conexión para evitar que se agote el tiempo de espera. Recovery está pensado como una herramienta para recuperar fácilmente datos perdidos debido a desconexiones breves, no para periodos muy largos como un día completo. Si surge la necesidad de recuperar datos durante periodos prolongados, recomendamos dividir las solicitudes más largas en ventanas de tiempo más cortas (por ejemplo, de dos horas) para reducir la posibilidad de desconexión a mitad de la solicitud por inestabilidad de internet u otros motivos, y para proporcionar mayor visibilidad sobre el progreso de solicitudes largas.Disponibilidad de datos
Backfill
- Tienes la opción de usar siempre “backfillMinutes=5” al conectarte y luego gestionar 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 de tiempo desconectado (idealmente con tu conjunto de reglas actual en tiempo real, usando la Rules API si es necesario).
- ¿5 minutos o menos?
- Solicitar una nueva conexión.
- Implementar backfill El backfill te permite reconectarte desde un punto anterior a la desconexión de un stream y cubre desconexiones 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 y deduplicar los datos, eliminarás la necesidad de recuperación a menos que TANTO el stream normal como el redundante experimenten tiempo de inactividad o desconexiones simultáneas. Si el stream redundante no puede transmitirse en vivo al entorno de producción, puede escribirse en un almacén de datos “de emergencia” separado. Luego, en caso de desconexiones o tiempo de inactividad en la conexión del stream principal, tu sistema tendrá datos disponibles 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 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 vez y transmitiéndola. Esto se realiza en paralelo al stream en tiempo real. Ten en cuenta que no existen soluciones para recuperar datos de Decahose más allá de la ventana de 5 días que proporciona Recovery, por lo que es importante utilizar un stream redundante para asegurarte de contar con 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 la cantidad de Posts que llega a tu almacén de datos final. Cualquier diferencia puede monitorearse y alertar a tu equipo sobre problemas que hagan que se descarten datos después de recibirlos.
- 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 puede indicar problemas, aunque probablemente habrá circunstancias en las que las caídas de volumen sean normales (por ejemplo, si la plataforma X no está disponible y las personas no pueden crear Posts durante algún período de tiempo).
Referencia de la API
Flujo Decahose
Métodos
| Método | Descripción |
|---|---|
| GET /{stream-type}/:stream | Conectar al flujo de datos |
GET :stream
Establece una conexión persistente con el flujo Firehose, a través de 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 tu panel, con la siguiente estructura: Decahose: https://gnip-stream.x.com/stream/sample10/accounts/:account_name/publishers/twitter/:stream_label.json?partition=1 |
| Partición (obligatoria) | partition=\{#} - Ahora la partición es obligatoria para consumir el stream completo. Debes conectarte 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 conectarte al stream usando compresión Gzip, simplemente envía un encabezado Accept-Encoding en la solicitud de conexión. El encabezado debe verse así: Accept-Encoding: gzip |
| Codificación de caracteres | UTF-8 |
| Formato de respuesta | JSON. El encabezado de tu solicitud debe especificar JSON como formato de la respuesta. |
| Límite de frecuencia | 10 solicitudes cada 60 segundos. |
| Parámetro de Backfill | Si compraste un stream con Backfill habilitado, debes agregar el parámetro “backfillMinutes” en la solicitud GET para habilitarlo. |
| Tiempo de espera de lectura | Configura un tiempo de espera de lectura en tu cliente y asegúrate de que sea superior a 30 segundos. |
| Compatibilidad con ediciones de Tweet | Todos los objetos de Tweet incluirán metadatos de edición del Tweet que describen su historial de ediciones. Consulta 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 las nuevas actividades se enviarán 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 asegurarte de 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 flujo, 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 flujo a medida que se lee en el lado del cliente.” |
| 429 | Límite de frecuencia excedido | Tu App ha superado el límite de solicitudes de conexión. |
| 503 | Servicio no disponible | Problema del servidor de X. Vuelve a conectar usando un patrón de retroceso exponencial. Si no se ha publicado un 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. |