Przykład przesyłania strumieniowego żądań nie działa w moim środowisku

Próbowałem wykorzystać API strumieniowego przesyłania strumieniowego za pomocą poleceń Pythona.

Jestprosty przykład w dokumentacji:

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)

Kiedy wykonam to, zadzwoń dorequests.post() nigdy nie wraca. Eksperymentowałem i udowodniłem, że zdecydowanie łączy się z Twitterem i odbiera dane z API. Jednak zamiast zwracać obiekt odpowiedzi, po prostu siedzi tam zużywając tyle danych, ile wysyła Twitter. Sądząc po powyższym kodzie, spodziewałbym sięrequests.post() zwrócić obiekt odpowiedzi z otwartym połączeniem do Twittera, który mógłbym nadal otrzymywać w czasie rzeczywistym.

(Aby udowodnić, że odbierał dane, połączyłem się z Twitterem przy użyciu tych samych danych uwierzytelniających w innej powłoce, po czym Twitter zamknął pierwsze połączenie, a połączenie zwróciło obiekt odpowiedzi.r.content atrybut zawierał wszystkie kopie zapasowe danych odebranych podczas połączenia.)

Dokumentacja nie wspomina o żadnych innych czynnościach wymaganych do spowodowaniarequests.post powrócić przed zużyciem wszystkich dostarczonych danych. Inni ludzie wydają się używać podobnego kodu bez napotkania tego problemu, np.tutaj.

Używam:

Python 2.7Ubuntu 11.04Żądania 0.14.0

questionAnswers(2)

yourAnswerToTheQuestion