He estado tratando de consumir la API de transmisión de Twitter utilizando las solicitudes de Python.El ejemplo de transmisión de solicitudes no funciona en mi entorno
Hay una simple example en la documentación:
import requests
import json
r = requests.post('https://stream.twitter.com/1/statuses/filter.json',
data={'track': 'requests'}, auth=('username', 'password'))
for line in r.iter_lines():
if line: # filter out keep-alive new lines
print json.loads(line)
Cuando ejecuto esto, la llamada a requests.post()
nunca regresa. Experimenté y probé que definitivamente se está conectando a Twitter y recibiendo datos de la API. Sin embargo, en lugar de devolver un objeto de respuesta, simplemente se queda consumiendo tantos datos como Twitter envía. A juzgar por el código anterior, esperaría que requests.post()
devuelva un objeto de respuesta con una conexión abierta a Twitter para poder seguir recibiendo resultados en tiempo real.
(Para demostrar que estaba recibiendo datos, he conectado a Twitter utilizando las mismas credenciales en otra cáscara, después de lo cual Twitter cerró la primera conexión, y la llamada devuelve el objeto de respuesta. El atributo r.content
contenía todos los datos de copia de seguridad recibidos mientras la conexión estaba abierta.)
La documentación no menciona ningún otro paso necesario para que requests.post
regrese antes de consumir todos los datos suministrados. Otras personas parecen estar usando código similar sin encontrar este problema, p. here.
que estoy usando:
- Python 2.7
- Ubuntu 11.04
- solicitudes 0.14.0
¡Gracias! Acabo de enviar una solicitud de extracción para actualizar los documentos. – Gareth