Este endpoint foi atualizado para incluir metadata de edição de Post. Saiba mais sobre essa metadata na página de fundamentos “Editar Posts”.
Decahose stream
- URLs expandidas e aprimoradas: - desfaz completamente URLs encurtadas e fornece metadata adicional (título e descrição da página)
- Particionamento de stream - 2 partições, cada uma contendo 50% do volume do stream Decahose
- Confiabilidade aprimorada - diversidade geográfica dos sistemas de backend
ENTERPRISE
Transmitindo likes
- Likes são entregues por meio de um stream independente
- Likes são historicamente chamados de “Favorites”. O payload no formato nativo enriquecido mantém essa nomenclatura
- Os streams incluem apenas likes públicos
- Público significa que o usuário que deu like, o criador do Post e o próprio Post são públicos na plataforma
- Likes são muito semelhantes a Retweets e representam um sinal público de engajamento
- Os elementos do payload incluem:
- Objeto Post original
- Objeto Actor que criou o Post original
- Objeto Actor que realizou a ação de like
- Apenas conteúdo original pode receber like
- Retweets não podem receber like. Um like em um Retweet é aplicado ao Post original
- Tweets com citação podem receber like
- As atividades de like incluem Gnip Enrichments aplicáveis (quando adquiridos/aplicados)
- Produtos / Recursos compatíveis
- Streams de likes oferecem suporte a Backfill (quando adquirido/aplicado)
- Não há suporte a Replay para streams de likes
- Não há suporte de Search ou Historical para likes
- Não há planos imediatos de adicionar suporte a likes ao PowerTrack
- Para os 10% de Posts amostrados entregues no Decahose, o stream inclui 100% dos likes públicos aplicáveis
- Partitions: 2
- URL Structure
Guias
Recuperação e Redundância
- Para oferecer suporte a vários ambientes, podemos implantar Additional Streams para sua conta. Esses streams são independentes entre si e têm um stream_label diferente para ajudar a diferenciá-los.
- Para ajudar a manter uma conexão, cada stream do Decahose oferece suporte a Redundant Connections. A arquitetura mais comum é um stream ter duas conexões e, no lado do cliente, haver dois consumidores independentes — idealmente em redes diferentes. Com esse design, pode haver redundância entre as redes do lado do cliente, servidores e caminhos do datastore. Observe que uma cópia completa dos dados é entregue em cada conexão e o lado do cliente deve ser tolerante a e gerenciar dados duplicados.
- Um “heartbeat” será enviado a cada 10 segundos; no entanto, com o stream do Decahose, o volume de dados é alto o suficiente para que até mesmo uma pequena duração (por exemplo, alguns segundos) sem Posts possa indicar um problema de conexão. Portanto, tanto um “silêncio de dados” quanto a ausência de um heartbeat podem ser usados para detectar uma desconexão.
Streams adicionais
Visão geral
Recovery é uma ferramenta de recuperação de dados (não deve ser usada para a coleta primária de dados) que oferece acesso em streaming a uma janela móvel de 5 dias de dados históricos recentes da X. Ela deve ser utilizada para recuperar dados em cenários em que o seu aplicativo consumidor perde dados no stream em tempo real, seja devido a uma desconexão por um curto período ou por qualquer outra situação em que você deixe de ingerir dados em tempo real por algum tempo.Usando o Recovery
Com o stream Recovery, sua App pode fazer solicitações que funcionam da mesma forma que as solicitações aos streams em tempo real. No entanto, sua App deve especificar parâmetros na URL que indiquem a janela de tempo desejada. Em outras palavras, uma solicitação de Recovery pede à API: “Posts do tempo A ao tempo B.” Esses Posts são então entregues por meio da sua conexão de streaming de uma maneira que imita o stream em tempo real, porém em uma taxa ligeiramente abaixo do tempo real. Veja abaixo um exemplo: “https://stream-data-api.x.com/stream/powertrack/accounts/someAccountName/publishers/twitter/powertrack.json?startTime=2023-07-05T17:09:12.070Z” Os Posts são entregues começando pelo primeiro (mais antigo) minuto do período especificado, seguindo em ordem cronológica até que o minuto final seja entregue. Nesse ponto, uma mensagem Recovery Request Completed é enviada pela conexão e, em seguida, a conexão é encerrada pelo servidor. Se sua solicitação começar em um horário com poucos ou nenhum resultado correspondente, provavelmente haverá um intervalo antes de os primeiros resultados serem entregues — os dados serão enviados quando o Recovery encontrar correspondências na parte do arquivo que estiver sendo processada naquele momento. Quando não houver resultados disponíveis para entregar, o stream continuará enviando caracteres de retorno de carro, ou “heartbeats”, pela conexão para evitar timeout. O Recovery se destina a ser uma ferramenta para recuperar facilmente dados perdidos devido a desconexões curtas, não para períodos muito longos, como um dia inteiro. Se surgir a necessidade de recuperar dados por longos períodos, recomendamos dividir solicitações mais extensas em janelas menores (por exemplo, duas horas) para reduzir a possibilidade de desconexão no meio da solicitação devido à volatilidade da internet ou outros motivos e para proporcionar mais visibilidade sobre o progresso de solicitações longas.Disponibilidade de dados
Backfill
- Você pode optar por sempre usar ‘backfillMinutes=5’ ao se conectar e, em seguida, tratar quaisquer dados duplicados fornecidos.
- Se você ficar desconectado por mais de cinco minutos, poderá recuperar dados usando Recovery.
- Determinar a duração do período de desconexão.
- 5 minutos ou menos?
- Se você tiver o Backfill habilitado para o stream, prepare a solicitação de conexão com o parâmetro ‘backfillMinutes’ apropriado.
- Mais de 5 minutos?
- Se você tiver um stream de Recovery, faça uma solicitação de Recovery para o período desconectado (idealmente com seu conjunto de regras de tempo real atual, usando a Rules API, se necessário).
- 5 minutos ou menos?
- Solicitar uma nova conexão.
- Implementar backfill O backfill permite reconectar a partir de um ponto anterior à desconexão de um stream e cobre desconexões de até 5 minutos. Ele é implementado incluindo um parâmetro na solicitação de conexão.
- Consumir um stream redundante de outro local Se o stream redundante puder ser enviado para o mesmo ambiente em produção, com deduplicação de dados, você eliminará a necessidade de recuperação, a menos que AMBOS o stream normal e o redundante tenham indisponibilidade ou desconexões simultâneas. Se o stream redundante não puder ser enviado em tempo real para o ambiente de produção, ele pode ser gravado em um repositório de dados “de emergência” separado. Então, no caso de desconexões ou indisponibilidade na conexão do stream primário, seu sistema terá dados disponíveis para preencher seu banco de dados primário no período em que os dados estiverem ausentes.
- Implementar Recovery Quando desconexões ou indisponibilidade afetarem tanto o stream primário quanto o redundante, use o Decahose Recovery para recuperar quaisquer dados perdidos. A API fornece uma janela rolante de 5 dias do arquivo e é melhor utilizá-la solicitando no máximo uma hora dessa janela por vez e transmitindo-a. Isso é feito em paralelo ao stream em tempo real. Observe que não temos soluções para recuperar dados do Decahose além da janela de 5 dias fornecida por Recovery, portanto, é importante utilizar um stream redundante para garantir que você tenha uma cópia completa dos dados do seu lado em caso de indisponibilidade significativa.
- Contar Posts recebidos Seu sistema deve contar o número bruto de Posts recebidos logo no início do seu app de ingestão e, em seguida, fornecer uma forma de comparar esses números ao número de Posts que chegam ao repositório de dados final. Quaisquer diferenças podem ser monitoradas e alertar sua equipe sobre problemas que estejam causando perda de dados após o recebimento.
- Analisar volumes armazenados anormais Você também pode analisar os volumes de dados armazenados no seu banco de dados final para procurar quedas anormais. Isso pode indicar problemas, embora provavelmente haja circunstâncias em que quedas de volume sejam normais (por exemplo, se a plataforma X estiver indisponível e as pessoas não conseguirem criar Posts por algum período).
Referência da API
Decahose stream
Métodos
Método | Descrição |
---|---|
GET /{stream-type}/:stream | Conectar ao stream de dados |
GET :stream
Estabelece uma conexão persistente com o stream Firehose, por meio da qual os dados em tempo real serão fornecidos.Especificações da solicitação
Método da solicitação | HTTP GET |
Tipo de conexão | Keep-Alive Isso deve ser especificado no cabeçalho da solicitação. |
URL | Disponível na página de Ajuda da API do stream no seu painel, usando a seguinte estrutura: Decahose: https://gnip-stream.x.com/stream/sample10/accounts/:account_name/publishers/twitter/:stream_label.json?partition=1 |
Partição (obrigatória) | partition=\{#} - A definição de partição agora é obrigatória para consumir o stream completo. Você precisará se conectar ao stream com o parâmetro de partição especificado. Abaixo está o número de partições por stream:* Decahose: 2 partições |
Compressão | Gzip. Para se conectar ao stream usando compressão Gzip, basta enviar um cabeçalho Accept-Encoding na solicitação de conexão. O cabeçalho deve ser o seguinte: Accept-Encoding: gzip |
Codificação de caracteres | UTF-8 |
Formato da resposta | JSON. O cabeçalho da sua solicitação deve especificar o formato JSON para a resposta. |
Limite de taxa | 10 solicitações a cada 60 segundos. |
Parâmetro de Backfill | Se você adquiriu um stream com Backfill ativado, será necessário adicionar o parâmetro “backfillMinutes” na solicitação GET para ativá-lo. |
Timeout de leitura | Defina um timeout de leitura no seu cliente e garanta que ele esteja configurado para um valor acima de 30 segundos. |
Suporte a edições de Tweet | Todos os objetos de Tweet incluirão metadata de edição de Tweet descrevendo o histórico de edições do Tweet. Consulte a página de fundamentos “Edit Tweets” para mais detalhes. |
Respostas
Status | Texto | Descrição |
---|---|---|
200 | Sucesso | A conexão foi aberta com sucesso e novas atividades serão enviadas conforme forem recebidas. |
401 | Não autorizado | A autenticação HTTP falhou devido a credenciais inválidas. Faça login em console.gnip.com com suas credenciais para garantir que você as está utilizando corretamente na sua solicitação. |
406 | Não aceitável | Geralmente, isso ocorre quando o seu cliente não inclui corretamente os cabeçalhos para aceitar codificação gzip do stream, mas também pode ocorrer em outras circunstâncias. Conterá uma mensagem JSON semelhante a “Esta conexão requer compressão. Para habilitar a compressão, envie um cabeçalho ‘Accept-Encoding: gzip’ na sua solicitação e esteja pronto para descompactar o stream conforme ele é lido no lado do cliente.” |
429 | Limite de taxa excedido | Seu App excedeu o limite de solicitações de conexão. |
503 | Serviço indisponível | Problema no servidor do X. Reconecte usando um padrão de backoff exponencial. Se nenhum aviso sobre esse problema tiver sido publicado na X API Status Page, entre em contato com o suporte ou acione o atendimento de emergência se não for possível conectar após 10 minutos. |