Transcript
Page 1: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014

PROCESSAMENTO DE TWEETS EM TEMPO REAL

Saturday, August 9, 14

Page 2: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

Saturday, August 9, 14

Page 3: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 4: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 5: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 6: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014

Real Time

Second Screen

Saturday, August 9, 14

Page 7: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 8: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014

SEM MAIS BLÁ BLÁ BLÁ, VAMOS À RECEITA DE BOLO

Saturday, August 9, 14

Page 9: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 10: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 11: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 12: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 13: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 14: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 15: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 16: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 17: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 18: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 19: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 20: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 21: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

Processa em média 500 tweets por minuto, com picos de até 2000 tweets.

Saturday, August 9, 14

Page 22: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 23: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 24: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

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

Page 25: Processamento de tweets em tempo real com Python, Django e Celery - TDC 2014

Miguel Galves | @mgalves Processamento de tweets em tempo real | TDC2014

obrigado ;)

@mgalves

[email protected]

http://github.com/mgalves/

http://br.linkedin.com/in/mgalves

Me livrei da minha conta no facebook.

Saturday, August 9, 14


Top Related