Lesen-streaming http-Antwort mit Python "Anfragen" - Bibliothek

Ich versuche zu konsumieren, einen event-stream zur Verfügung gestellt von der Kubernetes
api mithilfe der requests Modul. Ich habe laufen in das, was aussieht wie ein
problem der Pufferung: die requests Modul scheint auch zu hinken, indem Sie ein Ereignis.

Ich habe code, der ungefähr so aussieht:

r = requests.get('http://localhost:8080/api/v1beta1/watch/services',
                 stream=True)

for line in r.iter_lines():
    print 'LINE:', line

Als Kubernetes strahlt Ereignisbenachrichtigungen, dieser code wird nur angezeigt
das Letzte Ereignis wird ausgegeben, wenn ein neues event kommt, die macht es
fast völlig nutzlos code, die Bedürfnisse zu reagieren service
hinzufügen/löschen von Veranstaltungen.

Habe ich dies Problem gelöst, indem Sie laichen curl im Teilprozess anstatt
die requests Bibliothek:

p = subprocess.Popen(['curl', '-sfN',
                      'http://localhost:8080/api/watch/services'],
                     stdout=subprocess.PIPE,
                     bufsize=1)

for line in iter(p.stdout.readline, b''):
    print 'LINE:', line

Dies funktioniert, aber auf Kosten der Flexibilität geht. Gibt es eine Möglichkeit,
vermeiden Sie dieses problem der Pufferung mit der requests Bibliothek?

InformationsquelleAutor larsks | 2015-01-25
Schreibe einen Kommentar