Upload
miguel-galves
View
2.928
Download
47
Embed Size (px)
DESCRIPTION
O que meio bilhão de pessoas estão fazendo ou pensando neste exato momento? A análise de conteúdo do Twitter por responder a esta pergunta, e a muitas outras.
Citation preview
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014
PROCESSAMENTO DE TWEETS EM TEMPO REAL
Saturday, August 9, 14
Saturday, August 9, 14
SigaSeuTime lança o Tuitômetro do futebol brasileiro
Ferramenta permite acompanhar em tempo real a "empolgação" do torcedores no Twitter.
Quais os assuntos mais discutidos sobre o futebol
brasileiro no Twitter? Qual a torcida mais empolgada?
Qual a repercussão de um gol? Perguntas como essas
já podem ser respondidas em tempo real através do
Tuitômetro do futebol brasileiro, serviço inédito que
acaba de ser lançado.
Segundo Miguel Galves, sócio-diretor do SigaSeuTime, empresa responsável pelo desenvolvimento
da ferramenta, diz que a idéia nasceu da própria experiência com o universo digital: "Nosso principal
serviço é a curadoria e a distribuição de conteúdo de terceiros. Foi justamente a repercussão desse
conteúdo entre os usuários que inspirou o produto: e se a gente quantificasse e consolidasse essa
repercussão, transformando-a em informação? Daí nasceu o Tuitômetro."
A primeira versão do Tuitômetro foi ao ar
acom panhando os 20 times da série A do
futebol brasileiro. Traz, além da "tempera-
tura da torcida" (representada pela quanti-
dade de tweets por minuto, por pessoa e o
acumulado do dia), os assuntos mais co-
mentados (os chamados "trending topics")
e- os últimos tweets dos próprios
torcedores.
Para os mais curiosos, o Tuitômetro ainda
oferece uma página específicas com um
compilado detalhado de tudo o que está
acontecendo com um determinado time.
"Entre outras coisas, o serviço acaba
possibilitando perceber a animação das
torcidas no Twitter em tempo real, como
no exato momento em que o time faz um
gol. Isso é um experimento inédito no
futebol brasileiro", diz Miguel Galves. Na
fase de pré-lançamento do Tuitômetro, o
recorde ficou com o Corinthians, que
registrou mais de 1.000 tweets por minuto
em sua partida de estréia no Paulistão.
Para conhecer o Tuitômetro em ação,
basta acessar:
http://tuitometro.sigaseutime.com.br
Serviço:
O SigaSeuTime é uma start-up brasileira fundada em 2009, cujo principal serviço é curadoria e
distribuição multiplataforma de conteúdo, incluindo twitter, orkut, facebook, web, email, rss, msn, gtalk
e celular. Em janeiro de 2011, registra aproximadamente 500.000 usuários. Mais informações em
http://www.sigaseutime.com.br/futebol/sobre e com Fulano de Tal no telefone (011) 9999-9999.
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014
O QUE MEIO BILHÃO DE PESSOAS ESTÃO FAZENDO
NESTE MOMENTO?
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014
Really Big Data
•650MM de usuários•Média de 500MM de tweets / dia•Média de 5700 tweets / segundo
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014
Real Time
Second Screen
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014
API generosa
•Streaming API•Real Time•Versão envia até 1% de todos os tweets•4MM tweets / dia
https://dev.twitter.com/docs/api/streaming
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014
SEM MAIS BLÁ BLÁ BLÁ, VAMOS À RECEITA DE BOLO
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014
Componentes
•Python / Virtualenv•Django•Tweepy•Celery•Redis (Message Queue para Celery)•Twitter API APP
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014
Porque Celery?
•Fila de tarefas distribuída•Processamento assíncrono•Processamento distribuído / paralelo•Processamento escalável•Escrito em Python...
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014
Porque Django?
•Excelente servidor de aplicações:•Commands•ORM que funciona•Ambiente organizado•Prêmio: admin, shell, settings
Saturday, August 9, 14
Arquitetura
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC214
Twitter Grabber Celery Broker
Celery Worker
Celery Worker
Celery Worker
Streaming API
Apenas uma conexão por usuário e por IP
permitida
Django Command: abre conexão
permanente e joga resultados no celery broker
Variável conforme a carga necessária. Podem rodar no mesmo servidor ou
em diferentes servidores
REDIS
...
Saturday, August 9, 14
apps.twitter.com
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC214
Crie um app no Twitter, e obtenha os dois pares de chaves necessárias para autenticação OAUTH.
Saturday, August 9, 14
Miguel Galves | @mgalves
Montando ambiente...
Instale o servidor REDISMonte um ambiente virtualenv
> pip install django> pip install tweepy> pip install celery> pip install celery[redis]
Crie seu projeto Django
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014
models.py
from django.db import models
class Tweet(models.Model): id_str = models.CharField(max_length=255, unique=True) text = models.CharField(max_length=255) author = models.CharField(max_length=255)
Model Django que define um tweet resumido para persistência na base de dados.
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014
celery.py
from __future__ import absolute_importimport osfrom celery import Celeryfrom django.conf import settings
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'grabber.settings')
app = Celery('grabber')
app.config_from_object('django.conf:settings')app.autodiscover_tasks(lambda: settings.INSTALLED_APPS)
Configura o Celery no sistema, utilizando como base o arquivo settings.py, e carregando automagicamente tasks definidas nos apps.
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014
tasks.py import loggingfrom celery import shared_taskfrom .models import TweetLOGGER = logging.getLogger("grabber")
@shared_taskdef persist_tweet(tweet): try: id_str = tweet["id_str"] author = tweet["user"]["screen_name"] text = tweet["text"]
Tweet.objects.create(id_str = id_str, author = author, text = text) LOGGER.info("Tweet %s recorded" % (id_str)) except Exception, e: LOGGER.exception(e)
Task assíncrona que recebe um tweet em formato json, e persiste na base de dados.
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014
tweetgrabber.py (1)
class GrabberListener(StreamListener): def on_data(self, data): if data: tweet = json.loads(data) persist_tweet.delay(tweet) return True
def on_error(self, status): LOGGER.error("Twitter Error %s" % status) return FalseListener que recebe os dados da
Streaming API, transforma o JSON em estrutura de dados e passa para a tarefa assíncrona
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014
tweetgrabber.py (2)
class Command(BaseCommand): def execute(self, *args, **options):
auth = OAuthHandler(CONSUMER_KEY, CONSUMER_SECRET) auth.set_access_token(ACCESS_KEY, ACCESS_SECRET)
keywords = list(args)
if keywords: LOGGER.info("TWITTER SEARCH PARAMS = %s" % keywords) listener = GrabberListener() stream = Stream(auth, listener) stream.filter(track=keywords)
else: LOGGER.info("NO KEYWORDS")
Command Django que abre a conexão com a Streaming API utilizando OAuth, e define listener.
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014
Ativando o grabber
> redis-server
> celery -A grabber worker
> python manage.py tweetgrabber
Saturday, August 9, 14
Processa em média 500 tweets por minuto, com picos de até 2000 tweets.
Saturday, August 9, 14
Na derrota do Corinthians para o Tolima em 2011, processamos picos de 5000 / tweets por minutos.
:-(
SigaSeuTime lança o Tuitômetro do futebol brasileiro
Ferramenta permite acompanhar em tempo real a "empolgação" do torcedores no Twitter.
Quais os assuntos mais discutidos sobre o futebol
brasileiro no Twitter? Qual a torcida mais empolgada?
Qual a repercussão de um gol? Perguntas como essas
já podem ser respondidas em tempo real através do
Tuitômetro do futebol brasileiro, serviço inédito que
acaba de ser lançado.
Segundo Miguel Galves, sócio-diretor do SigaSeuTime, empresa responsável pelo desenvolvimento
da ferramenta, diz que a idéia nasceu da própria experiência com o universo digital: "Nosso principal
serviço é a curadoria e a distribuição de conteúdo de terceiros. Foi justamente a repercussão desse
conteúdo entre os usuários que inspirou o produto: e se a gente quantificasse e consolidasse essa
repercussão, transformando-a em informação? Daí nasceu o Tuitômetro."
A primeira versão do Tuitômetro foi ao ar
acom panhando os 20 times da série A do
futebol brasileiro. Traz, além da "tempera-
tura da torcida" (representada pela quanti-
dade de tweets por minuto, por pessoa e o
acumulado do dia), os assuntos mais co-
mentados (os chamados "trending topics")
e- os últimos tweets dos próprios
torcedores.
Para os mais curiosos, o Tuitômetro ainda
oferece uma página específicas com um
compilado detalhado de tudo o que está
acontecendo com um determinado time.
"Entre outras coisas, o serviço acaba
possibilitando perceber a animação das
torcidas no Twitter em tempo real, como
no exato momento em que o time faz um
gol. Isso é um experimento inédito no
futebol brasileiro", diz Miguel Galves. Na
fase de pré-lançamento do Tuitômetro, o
recorde ficou com o Corinthians, que
registrou mais de 1.000 tweets por minuto
em sua partida de estréia no Paulistão.
Para conhecer o Tuitômetro em ação,
basta acessar:
http://tuitometro.sigaseutime.com.br
Serviço:
O SigaSeuTime é uma start-up brasileira fundada em 2009, cujo principal serviço é curadoria e
distribuição multiplataforma de conteúdo, incluindo twitter, orkut, facebook, web, email, rss, msn, gtalk
e celular. Em janeiro de 2011, registra aproximadamente 500.000 usuários. Mais informações em
http://www.sigaseutime.com.br/futebol/sobre e com Fulano de Tal no telefone (011) 9999-9999.
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC214
http://dev.twitter.com
http://celeryproject.org
http://redis.io
http://djangoproject.com
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC214
Projeto disponível no GitHub. Forkeie a vontade...
https://github.com/mgalves/tweetrecorder
Saturday, August 9, 14
Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014
obrigado ;)
@mgalves
http://github.com/mgalves/
http://br.linkedin.com/in/mgalves
Me livrei da minha conta no facebook.
Saturday, August 9, 14