Twitter updates desde Twisted
Este post fue migrado de un blog hecho con Wordpress. Si se ve mal, dejame un comentario y lo arreglo.
¿Tenés un servidor escrito en Twisted? ¿Tenés eventos críticos o importantes que mandás por mail o a celulares? ¿Qué tal publicarlos en Twitter?
La versión original de este artículo utilizaba la biblioteca Twitty Twister, la única pensada para usar Twitter desde Twisted. Lamentablemente no funciona bien con el nuevo sistema de autenticación de Twitter por lo que voy a usar Tweepy, una librería con la cual hacer la danza de oAuth es muy sencillo.
1) Registrar un usuario dónde publicar las notificaciones.
2) Con ese usuario, registrar una aplicación. Es muy importante usar el mismo usuario para ahorrarnos algunos pasos en la danza oAuth.
3) De la página de la aplicación creada, tomar la siguiente información: consumer key, consumer secret (desde la home de la aplicación), access token y access token secret (de la página My Access Token).
4) Código:
Con los datos del punto 3, creamos el módulo twitterupdates.py:
import tweepy TWITTER_KEY = 'xxxxxxxxxxxxxxxx' TWITTER_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx' MY_KEY = 'xxxxxxxxxxxxxxxxxxxxxxxx' MY_SECRET = 'xxxxxxxxxxxxxxxxxxxxxxxxxx' auth = tweepy.OAuthHandler(TWITTER_KEY, TWITTER_SECRET) auth.set_access_token(MY_KEY, MY_SECRET) twitter = tweepy.API(auth)
y desde nuestra aplicación Twisted lo importamos:
from twitterupdates import twitter
Postear una actualización en Twitter o cualquier otra petición a un servidor externo tiene una naturaleza bloqueante y en un framework de concurrencia colaborativa, como es Twisted, no podemos darnos ese lujo. Para solucionar esto, utilizamos deferToThread:
deferToThread(twitter.update_status, "Mensaje a postear en Twitter")
Esta llamada retorna un objeto Deferred al cual se le pueden añadir callbacks o errbacks. La llamada bloqueante es corrida en un hilo aparte.
Enjoy!
Comentarios
Comments powered by Disqus